我首先要说的是,我在统计分析方面并不是很有才华。我有一个存储在.csv文件中的数据集,我希望以图形方式表示。我想要表示的是其他列中每个唯一条目的生存频率(在Survived列中表示为每个人为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
我想你想要这个:
df.groupby('Pclass')['Survived'].mean()
这会根据Pclass
的三个唯一值将数据帧分为三组。然后它取Survived
的平均值,它等于1值的数量除以总值的数量。这将产生一个类似于下面的数据框:
Pclass
1 0.558824
2 0.636364
3 0.696970
如果你愿意,那么从那里用.plot.bar()
绘制条形图是微不足道的。
添加到answer,这是一个简单的条形图。
result = df.groupby('Pclass')['Survived'].mean()
result.plot(kind='bar', rot=1, ylim=(0, 1))