使用多级 Pandas 数据框的 Seaborn 图时遇到问题

Having trouble with a Seaborn Plot from a multilevel Pandas Dataframe

我正在使用我已读入 pandas 的 csv 文件,使用以下命令:

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

这将创建一个 DataFrame object,其中第 1 行和第 2 行是每列中的 header 行。像这样:

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

我正在尝试 运行 使用 seaborn (sns.countplot) 的计数图,但是 运行 遇到了问题,因为第二行 header 没有被查看作为 header。 我要分析的列是一个简单的性别列(男/女)。但是,根据结果的排列方式,第 header 列如下所示:

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

我尝试使用计数图绘制此图:

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

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

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

当我展平数据框时,seaborn 图起作用了,但它没有映射男性和女性的数量,而是映射了男性、女性和 'Response' 的数量。这让我相信 header 的第二行是导致 unflattend DataFrame 中的值错误的原因。

这是我必须制作的许多情节中的第一个,后面的一些专栏更复杂,需要第 2 行作为 header 中的参考。因此,我不能简单地展平 DataFrame。

有人可以推荐这里的工作吗?在我必须开始更复杂的可视化(如热图等)之前,我现在想用一个简单的计数图将其扼杀在萌芽状态。

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