从多级Pandas Dataframe中遇到Seaborn Plot问题

时间:2015-11-07 22:43:39

标签: python pandas seaborn

我使用以下命令使用csv文件读取了大熊猫:

RawData = pd.read_csv(rawData_file_path, engine='python', header=[0,1])

这将创建一个DataFrame对象,其中第1行和第2行是每列中的标题行。像这样:

-------------------------------
|    Group 1   |    Group 2   |
-------------------------------
|   A   |   B  |   A   |  B   |
-------------------------------
|  data | data |  data | data |
-------------------------------
|  data | data |  data | data |
-------------------------------

我试图用seaborn运行一个计数图(sns.countplot),但由于第二行标题没有被视为标题而遇到问题。 我试图分析的专栏是一个简单的性别栏(男/女)。但是,根据结果的布局方式,列标题如下所示:

row 1: What is your gender? 
row 2: Response 
row n: Male or Female etc.

我尝试使用countplot绘制它:

sns.countplot(x=['What is your gender?'], data=RawData)

但是,我收到此错误:ValueError:DataFrame的真值是不明确的。

Use a.empty, a.bool(), a.item(), a.any() or a.all().

当我弄平数据框时,seaborn图有效,但不是映射男性和女性计数,而是映射男性,女性和“反应”。计数。这让我相信标题的第二行是导致unflattend DataFrame中的值错误的原因。

这是我必须制作的第一个图,后面的一些列更复杂,需要第二行作为标题中的引用。因此,我不能简单地展平DataFrame。

有人可以建议在这附近工作吗?在我必须开始更复杂的可视化(如热图等)之前,我现在想用一个简单的计数图来扼杀这个。

1 个答案:

答案 0 :(得分:1)

countplot这样的Seaborn函数假设你有tidy data。简而言之:每个变量应该是一列,每个观察应该是一行。您将希望找到一种格式化数据帧的方法,使其处于此基本结构中,然后您就可以使用seaborn来绘制它。