首先,我会说我并不是统计分析方面的真正才华。我有一个存储在.csv文件中的数据集,该数据集希望以图形方式表示。我要代表的是其他列中每个唯一条目的生存频率(在“生存”列中,每个人用0或1表示)。
例如:其他列之一,Class,保存三个可能值(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
答案 0 :(得分:1)
我想你想要这个:
df.groupby('Pclass')['Survived'].mean()
这基于Pclass
的三个唯一值将数据帧分为三组。然后,它取Survived
的平均值,等于1个值的数量除以合计值的数量。这样会产生一个看起来像这样的数据框:
Pclass
1 0.558824
2 0.636364
3 0.696970
如果您愿意的话,可以使用.plot.bar()
绘制条形图。
答案 1 :(得分:1)
在answer中添加了一个简单的条形图。
result = df.groupby('Pclass')['Survived'].mean()
result.plot(kind='bar', rot=1, ylim=(0, 1))