[英]Plotting boolean frequency against qualitative data in pandas
首先,我要说我不是统计分析方面的真正才华。 我有一个存储在.csv文件中的数据集,该数据集希望以图形方式表示。 我要代表的是其他列中每个唯一条目的生存频率(在“生存”列中,每个人用0或1表示)。
例如:其他列之一“类”保存三个可能值(1、2或3)之一。 我想画出第1类相对于第2类相对于第3类生存的可能性,以便我可以直观地确定该类是否与生存率相关。
我已经附上了到目前为止已经开发的代码片段,但是我会知道我所做的一切是否都错了,因为我以前从未使用过熊猫。
1 import pandas as pd
2 import matplotlib.pyplot as plt
3
4 df = pd.read_csv('train.csv')
5
6 print(list(df)[2:]) # slicing first 2 values of "ID" and "Survived"
7
8 for column in list(df)[2:]:
9 try:
10 df.plot(x='Survived',y=column,kind='hist')
11 except TypeError:
12 print("Column {} not usable.".format(column))
13
14 plt.show()
编辑:我附加了下面的数据框的一小部分
PassengerId Survived Pclass Name ... Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris ... A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... ... PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina ... STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) ... 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry ... 373450 8.0500 NaN S
5 6 0 3 Moran, Mr. James ... 330877 8.4583 NaN Q
我想你想要这个:
df.groupby('Pclass')['Survived'].mean()
这将根据Pclass
的三个唯一值将数据帧分为三组。 然后,它取Survived
的平均值,等于1个值的数量除以total的数量。 这将产生一个看起来像这样的数据框:
Pclass
1 0.558824
2 0.636364
3 0.696970
然后,如果需要,可以从那里.plot.bar()
使用.plot.bar()
绘制条形图。
除了答案 ,这是一个简单的条形图。
result = df.groupby('Pclass')['Survived'].mean()
result.plot(kind='bar', rot=1, ylim=(0, 1))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.