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() #侧栏

相关文章
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
95 4
数据分析的 10 个最佳 Python 库
|
22天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
63 8
|
2月前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
2月前
|
数据可视化 JavaScript 前端开发
Python中交互式Matplotlib图表
【10月更文挑战第20天】Matplotlib 是 Python 中最常用的绘图库之一,但默认生成的图表是静态的。通过结合 mpld3 库,可以轻松创建交互式图表,提升数据可视化效果。本文介绍了如何使用 mpld3 在 Python 中创建交互式散点图、折线图和直方图,并提供了详细的代码示例和安装方法。通过添加插件,可以实现缩放、平移和鼠标悬停显示数据标签等交互功能。希望本文能帮助读者掌握这一强大工具。
|
2月前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
86 5
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
某A保险公司的 数据图表和数据分析
某A保险公司的 数据图表和数据分析
72 0
某A保险公司的 数据图表和数据分析
|
2月前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
37 2
|
3月前
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
158 3
|
3月前
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
34 0