обзор:Изучив первую главу, мы получили базовое представление о данных Титаника, а также изучили некоторые основные статистические методы.Во второй главе мы узнали об очистке и реконструкции данных, что упрощает понимание данных. исследование Глава 2, Раздел 3:визуализация данных, в основном для ознакомления с библиотекой визуализации данных Python Matplotlib, в этой главе данные могут показаться вам очень интересными. В процессе игры визуализация данных позволяет нам лучше видеть результаты каждого ключевого шага, что можно использовать для оптимизации плана, что является очень полезным навыком.
2 Глава 2: Визуализация данных
Перед запуском импортируйте пакеты и данные numpy, pandas и matplotlib.
# 加载所需的库
# 如果出现 ModuleNotFoundError: No module named 'xxxx'
# 你只需要在终端/cmd下 pip install xxxx 即可
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#加载result.csv这个数据
df=pd.read_csv('result.csv')
df.head()
2.7 Как сделать так, чтобы люди сразу поняли ваши данные?
2.7.1 Задача 1: понять matplotlib, самостоятельно создать элемент данных и выполнить его базовую визуализацию.
Matplotlib — это библиотека для двухмерных графиков Python, которая создает цифры печатного качества в различных печатных форматах и кросс-платформенной интерактивной среде. Matplotlib доступен для сценариев Python, оболочек Python и IPython (открывается в новом окне), блокнотов Jupyter (открывается в новом окне), серверов веб-приложений и четырех наборов инструментов с графическим интерфейсом.
скриншоты скриншоты скриншоты скриншоты Matplotlib пытается сделать простые вещи проще, а сложные возможными. Вы можете создавать графики, гистограммы, спектры мощности, гистограммы, графики ошибок, диаграммы рассеивания и многое другое, написав всего несколько строк кода. Дополнительные примеры см. в разделе «Основные примеры чертежей» и в галерее примеров.
Для простого построения графиков модуль pyplot предоставляет интерфейс, подобный MATLAB, особенно в сочетании с IPython. Для опытных пользователей у вас есть полный контроль над стилями линий, свойствами шрифта, свойствами осей и многим другим с помощью объектно-ориентированного интерфейса или набора функций, знакомых пользователям MATLAB.
2.7.2 Задача 2: Визуализируйте распределение числа выживших среди мужчин и женщин в наборе данных «Титаник» (попробуйте это с помощью гистограммы).
#代码编写
a=df['Survived'].groupby(df['Sex']).sum()
a.plot.bar()
plt.show()
[Мышление] Подсчитать количество смертей среди мужчин и женщин в наборе данных Титаника и визуализировать его? Как это совместить с визуальной гистограммой количества выживших мужчин и женщин? Просмотрите визуализацию своих данных и расскажите о своих первых ощущениях (например, вы сразу видите, что выживает больше мальчиков, поэтому пол может влиять на выживаемость).
#思考题回答
data=df[df["Survived"]==0]
data=data['Survived'].groupby(data['Sex'])
result=data.value_counts()
result.plot.bar()
plt.show()
2.7.3 Задача 3: Визуализируйте соотношение числа выживших и числа смертей среди мужчин и женщин в наборе данных «Титаник» (попробуйте это с помощью гистограммы).
#代码编写
# 提示:计算男女中死亡人数 1表示生存,0表示死亡
data=df.groupby(['Sex','Survived'])
data=data['Survived'].count()
data=data.unstack()
data.plot(kind='bar',stacked='True')
plt.title('survived_count')
plt.ylabel('count')
plt.show()
[Советы] Для двух осей данных мужчин и женщин количество выживших и количество смертей представлено гистограммой в пропорции
2.7.4 Задача 4: визуализировать распределение числа выживших и погибших для различных тарифов в наборе данных «Титаника». (Попробуйте это с линейной диаграммой) (горизонтальная ось - это разные тарифы, а вертикальная ось - количество выживших)
[Подсказка] Для такого рода статистических данных, представленных ломаной линией, вы можете рассмотреть возможность сортировки данных или не представлять их отдельно. Посмотрите, что вы можете найти?
# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
fare_sur = df.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
fare_sur
#代码编写
# 排序后绘折线图
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()
# 排序前绘折线图
fare_sur1 = df.groupby(['Fare'])['Survived'].value_counts()
fare_sur1
fig = plt.figure(figsize=(20, 18))
fare_sur1.plot(grid=True)
plt.legend()
plt.show()
2.7.5 Задача 5: Визуально отобразить распределение выживших и погибших людей на разных позициях в наборе данных «Титаник». (попробуйте с гистограммой)
#代码编写
# 1表示生存,0表示死亡
pclass_sur = df.groupby(['Pclass'])['Survived'].value_counts()
pclass_sur
seaborn — это библиотека Python, построенная поверх matplot, которую можно использовать для создания богатой и очень привлекательной статистической графики. Библиотека Seaborn предназначена для того, чтобы сделать визуализацию основной частью изучения и понимания данных, помогая лучше изучить изучаемые наборы данных.
import seaborn as sns
sns.countplot(x="Pclass", hue="Survived", data=df)
Конкретные параметры:
sns.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
- x: гистограмма на оси x, разделенная меткой x для количества статистических данных.
- y: гистограмма на оси Y, разделенная меткой Y для количества статистических данных.
- оттенок: при делении метки x или y разделите количество на метку оттенка
- данные: DataFrame или массив или список массивов, набор данных, используемый для рисования, когда x или y отсутствует, параметр данных представляет собой набор данных, а x или y обязательны, и один из них должен присутствовать
# 如果特征比较多可以用sns.pairplot(data)来画特征和特征之间的关系
sns.pairplot(df)
plt.show() #直方图是单变量的分析,散点图是特征之间的关系
2.7.6 Задача 6: Визуализировать распределение выживших и погибших людей разного возраста в наборе данных Титаник. (неограниченное выражение)
#代码编写
facet = sns.FacetGrid(df, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, df['Age'].max()))
facet.add_legend()
2.7.7 Задача 7: визуализировать возрастное распределение людей, занимающих разные должности в наборе данных «Титаника». (попробуйте это с линейной диаграммой)
#代码编写
df.Age[df.Pclass == 1].plot(kind='kde')
df.Age[df.Pclass == 2].plot(kind='kde')
df.Age[df.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")
【Суммировать】На этом наша визуализация подошла к концу.Если вам очень интересна визуализация данных, вы также можете узнать о других модулях визуализации, таких как: pycharts, bokeh и т. д.
Если вы используете визуализацию данных в своей работе, вы должны знать, что самая большая роль визуализации данных заключается не в крутизне, а в самом быстром и интуитивном понимании того, что данные хотят выразить.