Два разных результата визуализации - PullRequest
1 голос
/ 28 июня 2019

Мои данные выглядят так:

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()

Это показывает, что почти каждая женщина умерла (и это неправильно!)

Результаты мужчин верны.Correct Not correct

1 Ответ

1 голос
/ 28 июня 2019

matplotlib.pyplot.bar принимает координату х баров, но вы предоставляете range(len(females)), который просто произвольно присваивает 0,1 гистограмме, не глядя на порядок столбца Survived ввыход value_counts().То, что вы хотите указать для координаты x, это индекс.Например:

plt.bar(females.index, females, align='edge', width=-0.4, label='Female', color='red', alpha=0.5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...