动手学数据分析(四)主要是对数据可视化,针对不同的数据要求,使用不同的图像表现形式,以突出其表达的数据信息。重点在于以多列柱状图、堆积柱状图、折线图、核密度图等图像形式完成泰坦尼克号数据集中的不同特征下的生存人数与死亡人数分布情况、年龄分布情况等。
第二章 数据准备
2.4 数据可视化
2.4.1 基本可视化图案
基本的可视化图案有哪些?分别适用于那些场景?
折线图:用于显示数据在一个连续的时间间隔或者时间跨度上的变化,它的特点是反映事物随时间或有序类别而变化的趋势。
柱状图(又名条形图):,使用垂直或水平的柱子显示类别之间的数值比较。柱状图描述的是分类数据,其中一个轴表示需要对比的分类,另一个轴代表相应的数值。
直方图:是一种统计报告图,描述的是一组数据的频次分布,由一系列高度不等的条纹表示数据分布的情况。
散点图:显示变量之间的相互影响程度,即变量间相关性。
饼状图:通常用来描述量、频率和百分比之间的关系。
箱型图:一种用作显示一组数据分散情况资料的统计图。词云图: 展现文本信息,对出现频率较高的“关键词”予以视觉上的突出,比如用户画像的标签。
雷达图:将多个分类的数据量映射到坐标轴上,对比某项目不同属性的特点。
【柱状图与直方图的区别】
1.直方图展示数据的分布,柱状图比较数据的大小。
2.直方图X轴为定量数据(为数字区间),柱状图X轴为分类数据。
3.直方图柱子无间隔,柱状图柱子有间隔。
4.直方图柱子宽度可不一,柱状图柱子宽度须一致。
2.4.2 可视化泰坦尼克号数据集中男女中生存人数分布情况
step1:求出具体男女中生存人数。
方法1:使用groupby方法
方法2:使用pivot_table透视表方法
#方法1:使用groupby方法
data1=df.groupby('Sex').agg({'Survived':'sum'})
data1
#方法2:使用pivot_table透视表方法
data=pd.pivot_table(df,index='Sex',values='Survived',aggfunc='sum')
data
step2:绘制柱状图
#1、导入可视化库,并设置中文字体
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
sns.set(font='SimHei')
#2、数据导入,3、作图数据
data=pd.pivot_table(df,index=['Sex'],values='Survived',aggfunc='sum')
#data=df.groupby('Sex').agg({'Survived':'sum'})
#4、选择可视化的图表类型并实现
fig=plt.figure(figsize=(6,7),dpi=70) #画布的设计
plt.bar(data.index,data['Survived'],width=0.6)
for a,b in zip(data.index,data['Survived']): #柱子上的数字显示
plt.text(a,b,'%d'%b,ha='center',va='bottom',fontsize=15)
#5、图例注释等装饰
plt.ylabel('生存人数')
plt.title('泰坦尼克号数据集中男女中生存人数分布情况')
plt.show()
【思考】计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?看到你的数据可视化,说说你的第一感受(比如:你一眼看出男生存活人数更多,那么性别可能会影响存活率)。
step1:求出具体男女中生存人数、死亡人数
data=df.groupby('Sex').agg({'Survived':'count'}).rename(columns={'Survived':"总人数"})
data1=df.groupby('Sex').agg({'Survived':'sum'}).rename(columns={'Survived':"生存人数"})
f_data=pd.merge(data,data1,on='Sex')
f_data["死亡人数"]=f_data["总人数"]-f_data["生存人数"]
f_data
step2:绘制多列柱状图、堆积柱状图
要想把男女生存人数与死亡人数结合在一起比较分析,本文使用两种图像进行展示,分别多列柱状图和堆积柱状图。