当我们进行数据分析的时候,如果单纯的只有一堆数据摆在你面前,你看起来肯定不舒服。最好能将数据的变化,通过图形呈现出来,在实现数据可视化后,我们就能够更快、更容易、更清晰地看懂数据所要呈现、传达的信息。
Python 在数据展示方面,有非常多好用的工具,比如 Matplotlib、Seaborn、Pygal等,都是颇受欢迎的功能包。我们接下来看看,怎么去实现展示本地的数据,还有从网络中获取到的数据。
可视化视图,大致上我们可以分为 4 大类,分别是:
- 相互比较:比如折线图,可以进行比较数据间各个类别之间的关系,包括数据随着时间的变化趋势;
- 相互联系:比如散点图,可以观察到两个或两个以上实例间的关系;
- 构成占比:比如饼图,可以很直观看到每个部分所占的比例、份额大小,包括其随着时间的比例变化;
- 分布情况:比如直方图,可以观察单个或多个变量的具体分布情况。
常用的 10 种视图:散点图、折线图、直方图、条形图、饼图、热力图、箱型图、蜘蛛图、二元变量分布图、成对关系。
1、安装 Matplotlib
打开终端,输入 pip install matplotlib
即可自动安装。
如果你想要查看 Matplotlib 开发者文档,输入 python -m pydoc -p 8899
即可,启动之后再访问 http://localhost:8899
,在 .../site-packages
栏下找到 matplotlib(package)就是了。
2、折线图
最近大家是不是又看到标题上写着「史上最惨毕业季」的文章啊?其实,每年都是这么写的,每年都是最难、最惨的。
其实,我们可以找到对应的数据,把它画成折线图,你看看就知道毕业生人数的趋势了。
这是 2010 年~2022 年大学毕业生数据(单位:万):
年份 | 大学毕业生人数(单位:万) | 研究生人数 |
2022 | 1076 | 120 |
2021 | 909 | 117.65 |
2020 | 874 | 110.66 |
2019 | 834 | 91.65 |
2018 | 821 | 85.8 |
2017 | 795 | 80.61 |
2016 | 765 | 66.71 |
2015 | 749 | 64.51 |
2014 | 700 | 62.13 |
2013 | 699 | 61.14 |
2012 | 680 | 58.97 |
2011 | 660 | 56.02 |
2010 | 631 | 53.82 |
2.1 2010 年~2022 年大学毕业生数据
根据上面给出的数据,我们先来绘制一幅折线图,看看从 2010 年到 2022 年之间的大学毕业生人数的变化趋势。其中,我们 X 轴为年份,Y 轴为人数,代码如下:
# 定义 X 轴和 Y 轴数据 # 其中,X 轴为年份;Y 轴为毕业生人数(单位:万) xData = [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022] yData = [631,660,680,699,700,749,765,795,821,834,874,909,1076] # 参数 1,设置横坐标的值 # 参数 2,设置纵坐标的值 plt.plot(xData, yData, xData, yData2) # 展示图像 plt.show()
运行结果,如图所示:
2.2 2010 年~2022 年研究生数据
那如果说,我想看看研究生人数是否也这么大的增长幅度,也这么夸张?其实也不难,传入多个代表 X 轴、Y 轴的数据的列表就行了,就可以得到一张复合折线图了。
代码如下:
# 定义 X 轴和 Y 轴数据 # 其中,X 轴为年份;Y 轴为毕业生人数(单位:万) xData = [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022] yData = [631,660,680,699,700,749,765,795,821,834,874,909,1076] # 加入研究生人数 yData2 = [53.82,56.02,58.97,61.14,62.13,64.51,66.71,80.61,85.8,91.65,110.66,117.65,120] # 参数 1,设置横坐标的值 # 参数 2,设置纵坐标的值 # 参数 3,设置第二条折线的横坐标的值 # 参数 4,设置第二条折线的纵坐标的值 plt.plot(xData, yData, xData, yData2) # 展示图像 plt.show()
运行结果,如图所示:
2.3 修改颜色、线条粗细
甚至,你还可以改折线的颜色、粗细,也很简单。比如,通过 color
可以指定对应的颜色,通过 linewidth
可以指定折线的粗细,代码如下:
# 通过 color 可以指定对应的颜色 # 通过 linewidth 可以指定粗细值 plt.plot(xData, yData, color='orange', linewidth=5.0) plt.plot(xData, yData2, color='green', linewidth=5.0) # 展示图像 plt.show()
运行结果,如图所示:
2.4 折线的 4 种样式
如果你不喜欢「实线」的线条,你也可以通过 linestyle
来更改,常用的四种类型,分别是:
第一种,- 表示实线(默认值);
第二种:-- 表示虚线;
第三种:: 表示虚点;
第四种:-. 表示短线、点的结合。
代码如下:
plt.plot(xData, yData, color='orange', linewidth=5.0, linestyle='--') plt.plot(xData, yData2, color='green', linewidth=5.0, linestyle='-.') # 展示图像 plt.show()
运行结果,如图所示:
3、饼图
3.1 普通饼图
通过饼图,你可以很容易的看到,每个部分的数据所占大小与总体数据之间的比例。在 Matplotlib 中,我们通过 pie(x, labels=None) 函数来绘制饼图,其中 x 代表饼图中的数据,且可以指定多个不同的份额,labels 用来指定饼图的标题。
假设,我们来统计一家水果店的种类份额,很简单的,代码如下:
import matplotlib.pyplot as plt # 饼图的数据 datas = [22, 30, 35, 8, 15] # 标签(苹果,梨,桃子,葡萄,樱桃) labs = ['apple', 'pear', 'peach', 'grape', 'cherry'] plt.pie(x = datas, labels = labs) plt.show()
运行结果,如图所示:
3.2 分离饼图
如果说,你想特别去突出某一块儿,让它更显眼的话,咱也可以办到。在 pie() 函数中,再指定 explode 就好了。
# 饼图的数据 datas = [22, 30, 35, 8, 15] # 标签(苹果,梨,桃子,葡萄,樱桃) labs = ['apple', 'pear', 'peach', 'grape', 'cherry'] # 分离,将 cherry 分离出去 exp = [0,0,0,0,0.15] plt.pie(x = datas, labels = labs, explode = exp) plt.show()
运行结果,如图所示:
3.3 饼图的更多设置
当然,你还有很多可以指定的显示方式,比如你可以自定义饼图的颜色、百分比的格式、标签与圆心的距离、饼图的初始角度、圆心、饼图的半径、逆/顺时针方向、圆圈实线、标题等等,大家都可以去多尝试。
代码如下:
import matplotlib.pyplot as plt # 饼图的数据 datas = [22, 30, 35, 8, 15] # 标签(苹果,梨,桃子,葡萄,樱桃) labs = ['apple', 'pear', 'peach', 'grape', 'cherry'] # 分离,将 cherry 分离出去 exp = [0,0,0,0,0.15] # 自定义颜色 cols = ['orange', 'green', 'blue', 'red', 'purple'] plt.pie(x = datas, labels = labs, explode = exp, colors = cols, autopct = '%.2f%%', # 设置百分比 textprops = {'fontsize':12, 'color':'black'},# 设置字体属性 ) # 标题 plt.title('Fruit Shop') plt.show()
运行结果,如图所示:
Python 基于 Matplotlib 实现数据可视化(二)+