前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可视化分析工具:Matplotlib

数据可视化分析工具:Matplotlib

作者头像
用户7569543
发布2021-06-24 18:16:05
1.9K0
发布2021-06-24 18:16:05
举报
文章被收录于专栏:数据挖掘与AI算法

绘图是数据分析工作中的重要一环,是进行探索过程的一部分。Matplotlib是当前用于数据可视化的最流行的Python工具包之一,它是一个跨平台库,用于根据数组中的数据制作2D图,主要用于绘制一些统计图形,例如散点图、条形图、折线图、饼图、直方图、箱型图等。

1.散点图

散点图通常用在回归分析中,描述数据点在直角坐标系平面上的分布图。散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。下面是绘制散点图的例子。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt 
x = np.arange(30)
y = np.arange(30)+3*np.random.randn(30)
plt.scatter(x, y, s=50) 
plt.show()

2.条形图

条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形。条形图可以横置或纵置,纵置时也称为柱状图(column chart)。此外,条形图有简单条形图、复式条形图等形式。例如下面一个例子,假设现在我们拿到了2017年内地电影票房前10的电影和电影票房数据,现在我们想直观比较各电影票房数据大小,那么条形图显然是最合适的呈现方式,代码如下。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt 
a = ['战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '摔跤吧!爸爸', '加勒比海盗5:死无对证','金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章']
# 单位:亿
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12]
# 用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] 
plt.rcParams['axes.unicode_minus']=False
# bar要求传递两个数字,可以单独设置x轴的显示
plt.bar(range(len(a)), b, width=0.3)  
plt.xticks(range(len(a)), a, rotation=90)  #字体倾斜角度
plt.grid(False)
plt.show()

3.折线图

折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
x = ['5.20','5.21','5.22','5.23','5.24']
y = [14.8,16.6,17.2,15.9,19.1]
plt.plot(x, y)
plt.show()

4.饼图

饼图英文名为Sector Graph,常用于统计学模块。2D饼图为圆形,仅排列在工作表的一列或一行中的数据可以绘制到饼图中。饼图常用图显示一个数据系列中各项的大小与各项总和的比例。以下是某家庭10月份家庭支出情况,我们用饼图来体现各部分支出占家庭整体支出情况,代码如下。

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
labels = ['娱乐','育儿','饮食','房贷','交通','其他']
sizes = [4,10,18,60,2,6]
explode = (0,0,0,0.1,0,0)
plt.figure(figsize=(10,7))
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)
plt.title("饼图示例-10月份家庭支出")
plt.show()

5.直方图

直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。下面我们以kaggle经典比赛案例——泰坦尼克号数据集为例,绘制乘客年龄的频数直方图,查看各年龄段乘客的年龄分布情况,代码如下。

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
#显示中文与正负号
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取Titanic数据集
titanic = pd.read_csv('train.csv')
# 检查年龄是否有缺失
any(titanic.Age.isnull())
# 删除含有缺失年龄的样本
titanic.dropna(subset=['Age'], inplace=True)
# 设置图形的显示风格
plt.style.use('ggplot')
# 绘图
plt.hist(titanic.Age,bins = 20,cor= 'steelblue',edgecolor = 'k',label = '直方图' ) 
# 去除图形顶部边界和右边界的刻度
plt.tick_params(top='off', right='off')
# 显示图例
plt.legend()# 去除网格线
plt.grid(False)
plt.show()

6.箱型图

箱形图(Box-plot)又称箱线图,是一种用于显示一组数据分散情况的统计图。因形状如箱子而得名。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
# 箱型图
plt.boxplot(df,patch_artist=True)  #默认垂直摆放箱体
plt.show()
代码语言:javascript
复制
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
# 箱型图
plt.boxplot(df,vert=False,patch_artist=True)  #水平箱型图
plt.show()

7.组合图

前面我们介绍的都是在figure对象中创建单独的图像,但有时候我们需要在同一个画布中创建多个子图或者说组合图,这时候我们可以用add_subplot来创建一个或多个subplot来创建组合图。

代码语言:javascript
复制
from numpy.random import randn
import matplotlib.pyplot as plt
#在同一个figure中创建一组2行2列的
subplotfig = plt.figure()
ax1 = fig.add_subplot(2,2,1)  #表示4个subplot中的第一个
ax2 = fig.add_subplot(2,2,2)  #表示4个subplot中的第二个
ax3 = fig.add_subplot(2,2,3)  #表示4个subplot中的第三个
ax4 = fig.add_subplot(2,2,4)  #表示4个subplot中的第四个
ax1.scatter(np.arange(30),np.arange(30)+3*randn(30))
ax2.bar(np.arange(8),[1,2,3,7,8,5,6,4])
ax3.hist(randn(100),bins=20)
ax4.plot(randn(60).cumsum()) 
plt.show()

明天6月7日是一年一度的高考日,预祝所有高考学子,考试顺利,金榜题名!


以上内容来自《Python广告数据挖掘与分析实战》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档