python 数据分析 Matplotlib常用图表(下)

简介: python 数据分析 Matplotlib常用图表

饼图

饼图用于显示各项相对总和的百分比大小

# 数据,会被饼图自动转换为百分比
p = [15,30,45,10]
plt.pie(p)
plt.show()

案例:2017年9国军费占比数据可视化

国家 军费占比
 美国 0.5548467
 中国 0.14444868
 印度 0.05094268
 沙特 0.04846696
 俄国 0.046753
 日本 0.04418206
 英国 0.04161112
 德国 0.03799276
 法国 0.03075605


# 国名
 mark = ['America','China','India','Saudi','Russia','Japan','Britain','Germany','France']
 # 各国占9国总军费的比例
 percent = [0.5548467,0.14444868,0.05094268,0.04846696,0.046753,0.04418206,0.04161112,0.03799276,0.03075605]
 plt.figure(figsize=(8, 8))
 plt.pie(
 percent, # 百分比
labels = mark, # 名称
explode=(0,0.1,0,0,0,0,0,0,0), # 突出块,突出比例
autopct='%1.1f%%', # 显示百分比方式
startangle=-110, # 饼图起始的角度,度数,默认0为右侧水平180度开始,逆时针旋转
)
plt.axis('equal') # 正圆形饼图,x/y轴尺寸相等.默认是扁图
plt.show()

直方图

直方图是表达数据的分布情况的统计图表,一般用来表示同等区间内,某类数值出现的个数或频率(频率=出现次数/总数)

x轴表示分组数据,y轴表示分布情况

从频率分布直方图可以直观估计出:

  • 众 数:频率分布直方图中最高矩形的底边中点的横坐标
  • 中位数:把频率分布直方图分成两个面积相等部分的平行于Y轴的直线横坐标

直方图与柱状图的区别:

  • 直方图:分区之间连续无间断,表示连续变量;值用矩形面积表示
  • 条形图:各柱之间有间隙,表示孤立的、不连续分类变量;值用矩形长度表示

案例:1班和2班语文成绩统计数据可视化

# 成绩数据
 h1 = [ 88.2, 83.5, 68.8, 85.4, 78.6, 69.3, 60.6, 91.2, 52.7,
 85.9, 57.1, 68. , 66.6, 78.2, 78.8, 85. , 89.1, 74.4,
 93.6, 75.7, 54.3, 55. , 90.9, 79.4, 94.4, 86.7, 82.4,
 76.7, 78.7, 72.3, 83.9, 78.6, 80. , 70.5, 87.1, 80.3,
 87.9, 65.1, 67.4, 61.5, 49.7, 77.1, 91.4, 72. , 61.5,
 73.9, 76.9, 88.2, 51.2, 53.9]
 h2 = [ 79.5, 99. , 80. , 71. , 79.2, 85.6, 79.2, 68.8, 68.7,
96.5, 63.8, 81.8, 76.9, 80. , 73.8, 77.1, 79.6, 76.8,
73.9, 73.2, 66. , 76.2, 76.4, 65.3, 75.2, 74.5, 87.5,
78.4, 95. , 72.6, 86. , 71.7, 71. , 87.7, 83.9, 76.8,
72.3, 67. , 67.8, 79.6, 81.9, 83. , 65.6, 91.6, 75.5,
77.6, 82.8, 87.5, 75.1, 79.4]


plt.hist(h1)


(array([ 4., 3., 3., 3., 5., 4., 11., 5., 7., 5.]),
array([49.7 , 54.17, 58.64, 63.11, 67.58, 72.05, 76.52, 80.99, 85.46,
89.93, 94.4 ]),
<a list of 10 Patch objects>)

plt.hist(
 h1, # 直方图数据
 10, # 直方个数
 density=1, # 默认0 数据出现个数,1 出现个数归一化为出现的频率
 histtype='bar', # 直方图样式:默认bar,stepfilled填充颜色,step不填充只有线条
 facecolor='gray', # 直方图颜色
 edgecolor = 'g', # 直方图边框颜色
 alpha=0.3,
 )
# 直方图叠加
plt.hist(h2, 10, density=1, histtype='bar', alpha=0.3)
(array([0.02840909, 0.01704545, 0.04545455, 0.0625 , 0.05113636,
0.02840909, 0.02840909, 0.00568182, 0.00568182, 0.01136364]),
array([63.8 , 67.32, 70.84, 74.36, 77.88, 81.4 , 84.92, 88.44, 91.96,
95.48, 99. ]),
<a list of 10 Patch objects>)

箱线图

箱线图又名盒须图,是一种用作显示一组数据离散情况的统计图表,常用作多组数据的综合统计比较

四分位数:

第一四分位数(Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
第三四分位数(Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

箱线图主要包含5个统计量,从上到下,从高到低:

最大非异常值,上边线

Q3,箱体上边缘上四分位数

Q2,中位数线

Q1,箱体下边缘下四分位数

最小非异常值,下边线

除了上面5个统计量,上下边缘外侧可能还有异常值

Q3和Q1的差值,即四分位数差

  • 大于Q3 1.5倍四分位数差的值,或者小于Q1 1.5倍四分位数差的值,划为异常值
a = [15,5,9,22,4,-5,45,-22]
plt.boxplot(a)
plt.show()

案例:某班级a/b/c三组学员数学成绩统计分析可视化

1 组别\编号 1 2 3 4 5 6 7 8
2 a 42 55 79 68 15 98 
3 b 32 59 77 100 92 88 5 0
4 c 92 98 78 65 97 100 0


a = [42,55,79,68,15,98]
 b = [32,59,77,100,92,88,5,0]
 c = [92,98,78,65,97,100,0]
 plt.boxplot(
 (a, c, b),
 labels = ('a','c','b'), # 标签
 showfliers = True, # 是否显示异常值,默认显示
whis = 1.5, # 指定异常值参数:默认1.5倍四分位差
showmeans = True, # 是否显示平均值,默认不显示
meanline = True, # 是否用线标示平均值,默认用点
widths = 0.5, # 柱子宽度
# vert = False, # 默认True纵向,False横向
patch_artist = True, # 是否填充颜色
boxprops = {'facecolor':'#ffff00','color':'green'}, # 箱体样式
)
plt.show()

众数、平均数,中位数的区别

  • 众数:出现频率最高的数,没什么用
  • 平均数:
  •   对极端值非常敏感
  • 中位数:
  •   对极端值不敏感

 

总结:

比赛打分之所以使用平均数,利用平均值的敏感(中位数会出现大量的相同分数),

同时为了降低平均值的敏感程度,去掉最高分和最低分

import numpy as np


a = [1,2,3,4,5,6,7,8,9,10,11]
 # 平均值,中位数
np.mean(a), np.median(a)


(6.0, 6.0)


a = [1,2,3,4,5,6,7,8,9,10,11,1000]
 # 平均值,中位数
np.mean(a), np.median(a)


(88.83333333333333, 6.5)


热力图

热力图以二维形式展示数据的大小,主要用于数据的重要程度/相关度展示

a = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
plt.imshow(a)


<matplotlib.image.AxesImage at 0x13a29f28>

plt.imshow(
a, # 数据
cmap='gray', # 配色,gray灰度
# origin='lower', # 水平翻转,默认upper,lower
interpolation='lanczos', # 渲染,模糊
)
plt.colorbar() #侧栏


<matplotlib.colorbar.Colorbar at 0x110f9278>

例子:可视化班级同学成绩和座位关系

 import numpy as np
 a = np.random.randint(0, 100, (10, 10))


 array([[80, 32, 62, 43, 57, 46, 39, 75, 21, 29],
 [94, 82, 83, 83, 50, 52, 70, 52, 46, 66],
 [86, 21, 50, 6, 58, 53, 46, 41, 45, 56],
 [67, 38, 38, 80, 8, 99, 5, 52, 70, 64],
 [47, 16, 61, 32, 69, 88, 13, 26, 65, 39],
 [46, 97, 59, 99, 4, 14, 19, 55, 61, 58],
 [91, 0, 82, 62, 19, 85, 57, 31, 9, 36],
 [ 9, 75, 2, 2, 9, 73, 7, 73, 15, 54],
 [23, 98, 22, 22, 21, 72, 88, 67, 17, 83],
 [49, 56, 66, 5, 81, 57, 0, 38, 60, 31]])


plt.figure(figsize=(10, 10))
 plt.imshow(
 a, # 数据
 cmap='gray', # 配色,gray灰度
 interpolation='lanczos', # 渲染,模糊
 )
 plt.xticks([0,1,2,3,4,5,6,7,8,9])
plt.yticks([0,1,2,3,4,5,6,7,8,9])
plt.grid()
plt.colorbar() #侧栏

相关文章
|
9月前
|
数据采集 数据可视化 数据挖掘
Python数据分析实战:Pandas处理结构化数据的核心技巧
在数据驱动时代,结构化数据是分析决策的基础。Python的Pandas库凭借其高效的数据结构和丰富的功能,成为处理结构化数据的利器。本文通过真实场景和代码示例,讲解Pandas的核心操作,包括数据加载、清洗、转换、分析与性能优化,帮助你从数据中提取有价值的洞察,提升数据处理效率。
434 3
|
11月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
1206 0
|
8月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
9月前
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
10月前
|
存储 数据挖掘 大数据
基于python大数据的用户行为数据分析系统
本系统基于Python大数据技术,深入研究用户行为数据分析,结合Pandas、NumPy等工具提升数据处理效率,利用B/S架构与MySQL数据库实现高效存储与访问。研究涵盖技术背景、学术与商业意义、国内外研究现状及PyCharm、Python语言等关键技术,助力企业精准营销与产品优化,具有广泛的应用前景与社会价值。
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
499 2
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
1785 2
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
751 8

推荐镜像

更多