Datawhale7月组队学习task4数据可视化

Posted 临风而眠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Datawhale7月组队学习task4数据可视化相关的知识,希望对你有一定的参考价值。

Datawhale7月task4数据可视化

准备工作

**复习:**回顾学习完第一章,我们对泰坦尼克号数据有了基本的了解,也学到了一些基本的统计方法,第二章中我们学习了数据的清理和重构,使得数据更加的易于理解;今天我们要学习的是第二章第三节:数据可视化,主要给大家介绍一下Python数据可视化库Matplotlib,在本章学习中,你也许会觉得数据很有趣。在打比赛的过程中,数据可视化可以让我们更好的看到每一个关键步骤的结果如何,可以用来优化方案,是一个很有用的技巧。

开始之前,导入numpy、pandas以及matplotlib包和数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_csv("result.csv")

一.逐步实现

1.任务一:跟着书本第九章,了解matplotlib,自己创建一个数据项,对其进行基本可视化

​ 之前在学概率论的时候试过👉链接

2.任务二:可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)。

#代码编写
#先分组
sex=df.groupby("Sex")['Survived'].sum()
print(sex)
sex.plot.bar()#画柱状图
plt.title("survived people")
# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
# plt.title("幸存人数")

image-20210719020928924

【思考】计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?看到你的数据可视化,说说你的第一感受(比如:你一眼看出男生存活人数更多,那么性别可能会影响存活率)

数据中1表示生存,0表示死亡,统计生存人数时就用了一个groupby对Sex进行分类,然后用sum对所有的1求和

统计死亡人数可以对Survied也进行groupby操作

df.groupby(['Sex','Survived'])['Survived'].count()

运行结果:

Sex     Survived
female  0            81
        1           233
male    0           468
        1           109
Name: Survived, dtype: int64
#把数据旋转一下
df.groupby(['Sex', 'Survived'])['Survived'].count().unstack()

`运行结果:`
Survived01
Sex
female81233
male468109
#把上面的数据存一下
survivedpeo = df.groupby(['Sex', 'Survived'])['Survived'].count().unstack()

died = survivedpeo[0]
died.plot.bar()
plt.title('died')

image-20210719080343929

3.任务三:可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)。

#代码编写
# 提示:计算男女中死亡人数 1表示生存,0表示死亡
survivedpeo.plot.bar()

image-20210719080326881

#叠起来更加直观
survivedpeo.plot(kind='bar',stacked='True')

image-20210719080412639

4.任务四:可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)

#代码编写
# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡

fare=df.groupby(['Fare', 'Survived'])['Survived'].count().unstack()
fare

plot默认就是折线图

fare.plot()

image-20210719080440368

5. 任务五:可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)

#代码编写
# 1表示生存,0表示死亡
pclass = df.groupby(['Pclass', 'Survived'])['Survived'].count().unstack()
pclass.plot.bar()

image-20210719080454322

【思考】看到这个前面几个数据可视化,说说你的第一感受和你的总结

女性存活人数多,存活率高

低票价的乘客中死亡人数多,死亡率高

头等舱存活率高,三等舱死亡率高

6.任务六:可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)

#把布尔值放进索引
df.Age[df.Survived==0].hist()
df.Age[df.Survived == 1].hist()
#把布尔值放进索引
df.Age[df.Survived == 0].hist(bins=5,alpha=0.5)#修改颜色和透明度
df.Age[df.Survived == 1].hist(bins=5,alpha=0.5)
plt.legend((0,1))
plt.xlabel('age')
plt.ylabel('count')

image-20210719080608230

标准化

#纵坐标变成密度,加上密度曲线
df.Age[df.Survived == 0].hist(bins=5, alpha=0.5,density=1)  # 修改颜色和透明度
df.Age[df.Survived == 1].hist(bins=5, alpha=0.5,density=1)
df.Age[df.Survived == 0].plot.density()
df.Age[df.Survived == 1].plot.density()
plt.legend((0, 1))
plt.xlabel('age')
plt.ylabel('density')

image-20210719080553415

7.任务七:可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)

#代码编写
#存一下舱位等级:
unique_pclass =df.Pclass.unique()
unique_pclass.sort()
unique_pclass


array([1, 2, 3], dtype=int64)
for i in unique_pclass:
    df.Age[df.Pclass == i].plot.density()
plt.xlabel("age")
plt.legend(unique_pclass)

image-20210719080629292

二.遇到的问题

1.导出为markdown

​ 一开始是ipynb中每个matplotlib的代码都执行了,但是那样子导出为md文件就导出一个无法解压的压缩文件

​ 然后我就把各个输出了图片的单元格的输出内容先清除,果真就可以导出了

​ 呜呜,然后还得去重新运行一遍然后把图截过来

2.plt.title()使用中文

用英文的名称好好的,我想试一下用中文名称,结果蹦出来下面这么一大串东西

查了一下,只需要在前面加上如下代码:

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

就正常了

为了方便起见,还是用英文🐶

链图片转存中…(img-1KR9WZd2-1626686240816)]

用英文的名称好好的,我想试一下用中文名称,结果蹦出来下面这么一大串东西

查了一下,只需要在前面加上如下代码:

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

就正常了

[外链图片转存中…(img-OpMChMSl-1626686240817)]

为了方便起见,还是用英文🐶

以上是关于Datawhale7月组队学习task4数据可视化的主要内容,如果未能解决你的问题,请参考以下文章

Datawhale7月组队学习task1数据加载及探索性数据分析

Datawhale7月组队学习task2数据清洗

Datawhale7月组队学习task5模型建立和评估

Datawhale动手学习数据分析-Task4

java学习笔记1(datawhale教程):基本数据类型与变量

datawhale9月组队学习task01环境搭建,初始数据库