熊猫数据框的seaborn图
Posted
技术标签:
【中文标题】熊猫数据框的seaborn图【英文标题】:seaborn plot for a pandas dataframe 【发布时间】:2022-01-15 22:59:09 【问题描述】:我有一个用于存储用户种族(类型为 a、b、c、d)及其物理、数学和英语分数的高中考试成绩的 pandas 数据框。我想使用 seaborn 图创建一个单独的图,该图将显示一个人的种族如何对应于平均数学、化学和物理分数?我将下面的图片附加到示例数据框,但它只是没有比赛列,而是假装它有一个比赛列,其类型为 (A,B,C,D)。
考虑过在 x 轴上使用带有种族类别的条形图,但是我如何以相同的方式为每个平均科目分数设置不同的条形图,就像在下面的示例中使用“色调”来表示性别一样,请在此处输入图像描述
需要知道是否还有其他更合适的图表可供我使用?以及我将如何实现它
【问题讨论】:
您能提供所需输出的图像吗?也许您打算包含来自 seaborn.barplot documentation 的图像?我已经用我假设你想要的输出编辑了这个问题 @DerekO - 我不确定您的大量编辑是否有必要。 OP 有责任提供说明。您的解释可能完全不正确,并且还在 OP 的嘴里说出了不存在的话。请不要这样做。如果有的话,您可以在评论中提出建议,但将其编辑到问题中是不合适的。我已经回滚到您进行大量修改之前。 @BigBen 好吧,这很公平。以后我会避免对编辑过于繁重 【参考方案1】:您需要首先将melt 和Chemistry, Physics, Math
列分成两列:一个标识符列和具有相应值的另一列。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
## recreate your DataFrame
df = pd.DataFrame(
'Name':list("QWERTYUI"),
'Student ID': list(range(12001,12009)),
'Race':list('ABCDABCD'),
'Chemistry': [59,54,42,66,60,78,64,82],
'Physics': [90,42,88,48,80,73,43,69],
'Math': [45,85,54,64,72,64,67,70]
)
df_melted = pd.melt(df, id_vars=['Name','Student ID','Race'], value_vars=['Chemistry','Physics','Math'])
在这里您可以看到两个 DataFrame 的结构差异:
>>> df
Name Student ID Race Chemistry Physics Math
0 Q 12001 A 59 90 45
1 W 12002 B 54 42 85
2 E 12003 C 42 88 54
3 R 12004 D 66 48 64
4 T 12005 A 60 80 72
5 Y 12006 B 78 73 64
6 U 12007 C 64 43 67
7 I 12008 D 82 69 70
>>> df_melted
Name Student ID Race variable value
0 Q 12001 A Chemistry 59
1 W 12002 B Chemistry 54
2 E 12003 C Chemistry 42
3 R 12004 D Chemistry 66
4 T 12005 A Chemistry 60
5 Y 12006 B Chemistry 78
6 U 12007 C Chemistry 64
7 I 12008 D Chemistry 82
8 Q 12001 A Physics 90
9 W 12002 B Physics 42
10 E 12003 C Physics 88
11 R 12004 D Physics 48
12 T 12005 A Physics 80
13 Y 12006 B Physics 73
14 U 12007 C Physics 43
15 I 12008 D Physics 69
16 Q 12001 A Math 45
17 W 12002 B Math 85
18 E 12003 C Math 54
19 R 12004 D Math 64
20 T 12005 A Math 72
21 Y 12006 B Math 64
22 U 12007 C Math 67
23 I 12008 D Math 70
然后您可以使用以下参数调用sns.barplot
:
ax = sns.barplot(x="Race", y="value", hue="variable", data=df_melted)
plt.show()
【讨论】:
以上是关于熊猫数据框的seaborn图的主要内容,如果未能解决你的问题,请参考以下文章