Есть две проблемы:
Первое: у вас есть лишние пробелы в именах столбцов при чтении значений из файла CSV.Чтобы избавиться от них, вы можете использовать skipinitialspace=True
Second: вы используете range(4)
для построения графиков, тогда как у вас есть только два бара для мужской и женской категорий.В результате вы получите "ValueError: shape mismatch
.Поэтому лучше использовать длину мужского и женского счета
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
data = pd.read_csv('titanic_data/train.csv', skipinitialspace=True)
males = data[data['Sex']=='male']['Survived'].value_counts()
females = data[data['Sex']=='female']['Survived'].value_counts()
figure1 = plt.bar(range(len(males)), males, align='edge', width=0.4, label='Male')
figure2 = plt.bar(range(len(females)), females, align='edge', width=-0.4, label='Female')
plt.legend()
plt.xticks(np.arange(len(males)), rotation=0)
plt.title("Third class survivors")
plt.show()
