根据熊猫中的定性数据绘制布尔频率

问题描述 投票:0回答:2

我首先要说的是,我在统计分析方面并不是很有才华。我有一个存储在.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 
python pandas dataframe matplotlib
2个回答
1
投票

我想你想要这个:

df.groupby('Pclass')['Survived'].mean()

这会根据Pclass的三个唯一值将数据帧分为三组。然后它取Survived的平均值,它等于1值的数量除以总值的数量。这将产生一个类似于下面的数据框:

Pclass
1    0.558824
2    0.636364
3    0.696970

如果你愿意,那么从那里用.plot.bar()绘制条形图是微不足道的。


1
投票

添加到answer,这是一个简单的条形图。

result = df.groupby('Pclass')['Survived'].mean()

result.plot(kind='bar', rot=1, ylim=(0, 1))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.