【问题标题】:Two different resutls of visualisation两种不同的可视化结果
【发布时间】:2019-11-10 16:07:33
【问题描述】:

我的数据如下:

Survived,Pclass,Name,Sex
0,3,"Braund, Mr. Owen Harris",male
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female
1,3,"Heikkinen, Miss. Laina",female
1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female
0,3,"Allen, Mr. William Henry",male
0,3,"Moran, Mr. James",male,

当我试图比较头等舱的幸存者人数和性别时,结果很奇怪。

当我尝试这样做时

data[(data['Sex']=='female') & (data['Pclass']== 1)]['Survived'].value_counts().plot(kind='bar')


plt.legend()
plt.xticks(np.arange(2), rotation=0)
plt.title("Male and female survivors in first class")

plt.show()

这表明几乎所有头等舱的女性都活了下来(这是正确的)

但是当我尝试这样做时:

import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

data = pd.read_csv('titanic_data/train.csv')

males = data[(data['Sex']=='male') & (data['Pclass'] == 1)]['Survived'].value_counts()
females = data[(data['Sex']=='female') & (data['Pclass']== 1)]['Survived'].value_counts()

plt.bar(range(len(females)), females, align='edge', width=-0.4, label='Female', color='red', alpha=0.5)
plt.bar(range(len(males)), males, align='edge', width=0.4, label='Male', color='blue', alpha=0.5)


plt.legend()
plt.xticks(np.arange(len(males)), rotation=0)
plt.title("Male and female survivors in first class")

plt.show()

这表明几乎所有女性都死了(这是错误的!)

男性结果是正确的。

【问题讨论】:

  • 它对我来说很好用。我得到了 2 个活着的女性和 0 个活着的男性。试试print (females),你会看到 2
  • 无法重现您的问题。我有 0 男 2 女幸存。
  • 我认为问题在于可视化。添加plt.xticks(np.arange(4), rotation=0),您将看到与df.plot 相似的条形
  • 我更新了问题。打印后(女性)我看到“1 - 94, 0 - 3”。这不是我在条形图上看到的。

标签: python pandas matplotlib data-science


【解决方案1】:

matplotlib.pyplot.bar 采用条形的 x 坐标,但您提供的是 range(len(females)),它只是将 0,1 任意分配给条形图,而不查看 value_counts() 输出中 Survived 列的顺序。您要为 x 坐标提供的是索引。例如:

plt.bar(females.index, females, align='edge', width=-0.4, label='Female', color='red', alpha=0.5)

【讨论】:

  • 现在它正在工作。但是为什么“男性”栏显示正确?我和女性一样。
  • 男性 value_counts() 的输出恰好是正确的顺序 (0, 1)。可能是因为 0 的值在 1 之前先出现,所以先算 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多