繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM