Datawhale社区 Joyful Pandas
一维数据
Datawhale社区 动手学数据分析
开始之前,导入numpy、pandas以及matplotlib包和数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#加载result.csv这个数据
df = pd.read_csv('./result.csv')
df.head()
Unnamed: 0 | PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1.0 | 0.0 | A/5 21171 | 7.2500 | NaN | S |
1 | 1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1.0 | 0.0 | PC 17599 | 71.2833 | C85 | C |
2 | 2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0.0 | 0.0 | STON/O2. 3101282 | 7.9250 | NaN | S |
3 | 3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1.0 | 0.0 | 113803 | 53.1000 | C123 | S |
4 | 4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0.0 | 0.0 | 373450 | 8.0500 | NaN | S |
《Python for Data Analysis》第九章
跟着书本第九章,了解matplotlib,自己创建一个数据项,对其进行基本可视化
【思考】最基本的可视化图案有哪些?分别适用于那些场景?(比如折线图适合可视化某个属性值随时间变化的走势)
该部分参考内容自datawhale开源内容 fantastic-matplotlib
matplotlib提供了两种最常用的绘图接口
显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)
依赖pyplot自动创建figure和axes,并绘图
fig, ax = plt.subplots()
ax.plot([1,2,3,4], [1,4,2,3])
plt.show()
plt.plot([1,2,3,4], [1,4,2,3]);
在jupyter notebook中使用matplotlib时会发现,代码运行后自动打印出类似
这样一段话,这是因为matplotlib的绘图代码默认打印出最后一个对象。如果不想显示这句话,有以下三种方法:
在代码块最后加一个分号;
在代码块最后加一句plt.show()
在绘图时将绘图对象显式赋值给一个变量,如将plt.plot([1, 2, 3, 4]) 改成line =plt.plot([1, 2, 3, 4])
可视化展示泰坦尼克号数据集中男女中生存人数分布情况(用柱状图试试)。
#代码编写
sex_survived = df.groupby('Sex')['Survived'].sum()
_ = plt.bar(sex_survived.index, sex_survived.values)
【思考】计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?看到你的数据可视化,说说你的第一感受(比如:你一眼看出男生存活人数更多,那么性别可能会影响存活率)。
#思考题回答
女性的存活人数远多于男性
可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(用柱状图试试)。
#代码编写
# 提示:计算男女中死亡人数 1表示生存,0表示死亡
radio_ss = df.groupby(['Sex','Survived'])['Survived'].count().unstack()
radio_ss
Survived | 0 | 1 |
---|---|---|
Sex | ||
female | 81 | 233 |
male | 468 | 109 |
索引透视:将行索引转换为列索引,
unstack()
:默认将行索引最内侧移动到列索引最内层radio_ss.plot(kind = 'bar', stacked = True);
【提示】男女这两个数据轴,存活和死亡人数按比例用柱状图表示
可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(用折线图试试)(横轴是不同票价,纵轴是存活人数)
【提示】对于这种统计性质的且用折线表示的数据,你可以考虑将数据排序或者不排序来分别表示。看看你能发现什么?
#代码编写
# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
df.groupby(['Fare','Survived'])['Survived'].count().unstack().plot(kind = 'line');
可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(用柱状图试试)
#代码编写
# 1表示生存,0表示死亡
df.groupby(['Pclass', 'Survived'])['Survived'].count().unstack().plot(kind = 'bar', stacked = True);
【思考】看到这个前面几个数据可视化,说说你的第一感受和你的总结
#思考题回答
可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况。(不限表达方式)
#代码编写
df.groupby(['Age','Survived'])['Survived'].count().unstack().plot(kind = 'line');
可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(用折线图试试)
#代码编写
df.groupby(['Age','Pclass'])['Age'].count().unstack().plot(kind = 'line');
【思考】上面所有可视化的例子做一个总体的分析,你看看你能不能有自己发现
#思考题回答
【总结】
对数据可视化有了基本了解,学会了基本图形的绘制。