数据分析实例(上)
数据分析实例(下)
3.数据可视化
基本的可视化图案及使用场景
1.柱状图
展示多个分类的数据变化和同类别各变量之间的比较情况。
适用:对比分类数据。
局限:分类过多则无法展示数据特点。
相似图表:1)堆积柱状图。比较同类别各变量和不同类别变量总和差异。
2)百分比堆积柱状图。适合展示同类别的每个变量的比例。2.条形图
类似柱状图,只不过两根轴对调了一下。适用:类别名称过长,将有大量空白位置标示每个类别的名称。
局限:分类过多则无法展示数据特点 。
相似图表:1)堆积条形图。比较同类别各变量和不同类别变量总和差异。
2)百分比堆积条形图。适合展示同类别的每个变量的比例。
3)双向柱状图。比较同类别的正反向数值差异。3.折线图
展示数据随时间或有序类别的波动情况的趋势变化。适用:有序的类别,比如时间。
局限:无序的类别无法展示数据特点。
相似图表:1)面积图。用面积展示数值大小。展示数量随时间变化的趋势。
2)堆积面积图。同类别各变量和不同类别变量总和差异。
3)百分比堆积面积图。比较同类别的各个变量的比例差异。4.柱状图
结合柱状图和折线图在同一个图表展现数据。适用:要同时展现两个项目数据的特点。
局限:有柱状图和折线图两者的缺陷。5.散点图
用于发现各变量之间的关系。适用:存在大量数据点,结果更精准,比如回归分析。
局限:数据量小的时候会比较混乱。
相似图表:气泡图。用气泡代替散点图的数值点,面积大小代表数值大小。6.饼图
用来展示各类别占比,比如男女比例。适用:了解数据的分布情况。
缺陷:分类过多,则扇形越小,无法展现图表。
相似图表:1)环形图。挖空的饼图,中间区域可以展现数据或者文本信息。
2)玫瑰饼图。对比不同类别的数值大小。
3)旭日图。展示父子层级的不同类别数据的占比。7.地图
用颜色的深浅来展示区域范围的数值大小。适合:展现呈面状但属分散分布的数据,比如人口密度等。
局限:数据分布和地理区域大小的不对称。通常大量数据会集中在地理区域范围小的人口密集区,容易造成用户对数据的误解。
相似图表:1)气泡地图。用气泡大小展现数据量大小。
2)点状地图。用描点展现数据在区域的分布情况。
3)轨迹地图。展现运动轨迹。8.热力图
以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。适合:可以直观清楚地看到页面上每一个区域的访客兴趣焦点。
局限:不适用于数值字段是汇总值,需要连续数值数据分布。9.矩阵树图
展现同一层级的不同分类的占比情况,还可以同一个分类下子级的占比情况,比如商品品类等。适用:展示父子层级占比的树形数据。
缺陷:不适合展现不同层级的数据,比如组织架构图,每个分类不适合放在一起看占比情况。10.指标卡
突出显示一两个关键的数据结果,比如同比环比。适合:展示最终结果和关键数据。
缺陷:没有分类对比,只展示单一数据。11.词云
展现文本信息,对出现频率较高的“关键词”予以视觉上的突出,比如用户画像的标签。适合:在大量文本中提取关键词。
局限:不适用于数据太少或数据区分度不大的文本。12.仪表盘
展现某个指标的完成情况。适合:展示项目进度。
局限:只适合展现数据的累计情况,不适用于数据的分布特征等。13.雷达图
将多个分类的数据量映射到坐标轴上,对比某项目不同属性的特点。适用:了解同类别的不同属性的综合情况,以及比较不同类别的相同属性差异。
局限:分类过多或变量过多,会比较混乱。14.漏斗图
用梯形面积表示某个环节业务量与上一个环节之间的差异。适用:有固定流程并且环节较多的分析,可以直观地显示转化率和流失率。
局限:无序的类别或者没有流程关系的变量。15.瀑布图
采用绝对值与相对值结合的方式,展示各成分分布构成情况,比如各项生活开支的占比情况。适合:展示数据的累计变化过程。
局限:各类别数据差别太大则难以比较。16.桑基图
一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,起始流量总和始终与结束流量总和保持平衡。比如能量流动等。适合:用来表示数据的流向。
局限:不适用于边的起始流量和结束流量不同的场景。比如使用手机的品牌变化。
相似图表:1)和弦图。展现矩阵中数据间相互关系和流量变化。数据节点如果过多则不适用。17.箱线图
是利用数据中的五个统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据的一种方法。适用:用来展示一组数据分散情况,特别用于对几个样本的比较。
局限:对于大数据量,反应的形状信息更加模糊。转载自简书作者安琪Angela
下面以泰坦尼克数据为例
1.首先引入库和数据
#开始之前,导入numpy、pandas包和数据
# 加载所需的库
# 如果出现 ModuleNotFoundError: No module named 'xxxx'
# 你只需要在终端/cmd下 pip install xxxx 即可
#%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
text = pd.read_csv(r'result.csv')#导入文件
2.可视化展示泰坦尼克号数据集中男女中生存人数分布情况(柱状图)
sex = text.groupby('Sex')['Survived'].sum()
sex.plot.bar()#绘制柱状图
plt.title('survived_count')#图的标题
plt.show()
计算出泰坦尼克号数据集中男女中死亡人数,并可视化展示?如何和男女生存人数可视化柱状图结合到一起?
sex = text.groupby(['Sex','Survived'])['Survived'].count()
sex.plot.bar()#绘制柱状图
plt.title('survived_count')#图的标题
plt.show()
3.可视化展示泰坦尼克号数据集中男女中生存人与死亡人数的比例图(柱状图)
text.groupby(['Sex','Survived'])['Survived'].count().unstack().plot(kind='bar',stacked='True')#柱状,堆叠
#unstack():是针对pandas的轴进行重新排列的一种方法,具体用途:将数据的行index旋转成列columns
plt.title('survived_count')
plt.ylabel('count')
plt.show()
4.可视化展示泰坦尼克号数据集中不同票价的人生存和死亡人数分布情况。(折线图)
# 计算不同票价中生存与死亡人数 1表示生存,0表示死亡
# 排序后绘折线图
fare_sur = text.groupby(['Fare'])['Survived'].value_counts().sort_values(ascending=False)
print(fare_sur)
fig = plt.figure(figsize=(20, 18))
fare_sur.plot(grid=True)
plt.legend()
plt.show()
# 排序前绘折线图
fare_sur1 = text.groupby(['Fare'])['Survived'].value_counts()
fare_sur1
fig = plt.figure(figsize=(20, 18))
fare_sur1.plot(grid=True)
plt.legend()
plt.show()
排序后:
排序前:
5.可视化展示泰坦尼克号数据集中不同仓位等级的人生存和死亡人员的分布情况。(柱状图)
# 1表示生存,0表示死亡
pclass_sur = text.groupby(['Pclass'])['Survived'].value_counts()
print(pclass_sur)
import seaborn as sns #Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易
sns.countplot(x="Pclass", hue="Survived", data=text)
plt.show()
6.可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况
facet = sns.FacetGrid(text, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()
plt.show()
7.可视化展示泰坦尼克号数据集中不同仓位等级的人年龄分布情况。(折线图)
text.Age[text.Pclass == 1].plot(kind='kde')#线形
text.Age[text.Pclass == 2].plot(kind='kde')
text.Age[text.Pclass == 3].plot(kind='kde')
plt.xlabel("age")
plt.legend((1,2,3),loc="best")#位置属性
plt.show()
【总结】到这里,我们的可视化就告一段落啦,如果你对数据可视化极其感兴趣,你还可以了解一下其他可视化模块,如:pyecharts,bokeh等。