通过 Python 实现的数据可视化

数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。

一、利用 Matplotlib 库实现数据可视化

1、Matplotlib 库的安装

Windows+R,输入 cmd 启动 CMD 命令提示符控制器,输入指令
python pip -m install user_matplotlib
如果提示错误可考虑使用国内镜像
python pip install -i https://mirrors.aliyun.com/pypi/simple/ matplotlib
提示安装成功

Successfully installed pip-22.3.1

2、利用 matplotlib 实现绘制简单的图表

简单代码及注释如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import matplotlib.pyplot as plt

x_values = range(1, 1001) # X轴的值
y_values = [x ** 2 for x in x_values] # Y轴的值
fig, ax = plt.subplots() # fig画布,ax子图区域
ax.scatter(x_values, y_values, s=10, c=y_values, cmap=plt.cm.Greens) # 绘制散点图
ax.grid(True) # 打开网格
ax.grid(color='gray', ls='-.', lw=0.25) # 设置网格颜色,线型,线宽
ax.set_title("Squares", fontsize=25) # 设置图表标题
ax.set_xlabel("value", fontsize=15) # 设置X轴标签
ax.set_ylabel("square value", fontsize=15) # 设置Y轴标签
ax.tick_params(axis='both', labelsize=15) # 设置刻度标签大小
ax.axis([0, 1100, 0, 1100000]) # 设置X轴坐标为0-1100,Y轴坐标为0-11000000
plt.savefig('squares_plt.png') # 保存图片并将其命名为"squares_plt.png"
plt.show() # 展示图表

效果图如下
简单的图表


简单代码解释
1. 用 import 引入 matplotlib.pyplot 库并简写为 plt
2. 设定 X 轴数据与 Y 轴数据
3. 创建 fig 画布,ax 子图区域
4. 利用 scatter () 方法绘制散点图并着色,本例中设置为依照 Y 值大小渐变绿色
5. 打开并设置网格
6. 设置图表标题,设置 X 轴与 Y 轴标签
7. 设置 X 轴与 Y 轴坐标数据范围
8. 保存图片并展示图表

ps:plt.savefig('squares_plt.png') 一定要写在 plt.show() 前面,否则只会保存空白图片
其原理是 plt.show() 执行完毕后会生成一张新的空白图表导致 plt.savefig('squares_plt.png') 保存的是这张新的空白图表

二、导入 csv 文件中的数据并且进行更加复杂的数据可视化

1、通过 csv 文件记录数据

在 excel 中记录如下数据

时间 最高温 最低温 天气
2022-11-22 17 12 小雨
2022-11-23 16 11 多云
2022-11-24 19 11 多云
2022-11-25 18 10
2022-11-26 19 10 多云
2022-11-27 21 14 多云
2022-11-28 23 15 小雨
2022-11-29 17 3 中雨
2022-11-30 2 -1
2022-12-01 3 -2
2022-12-02 7 0
2022-12-03 7 5 小雨
2022-12-04 7 2 小雨
2022-12-05 6 0
2022-12-06 9 1
2022-12-07 7 6 小雨

点击 “文件”=>“另存为”=>“选择位置”=>“保存类型”=>“CSV UTF-8 (逗号分隔)(*.csv)”=>“保存” 即可保存此文件

2. 打开 csv 文件读取数据并进行可视化

本例中以 11 月 23 日 10 时通过《天气》app 获取的栖霞区近期天气情况为数据绘制相关图表

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import csv
import matplotlib.pyplot as plt
from datetime import datetime

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = []
y1 = []
y2 = []
weather = []
kind = ["晴", "多云", "阴", "小雨", "中雨"]
s = [0, 0, 0, 0, 0]
with open("weather.csv", 'r', encoding='UTF-8') as csvfile: # 打开csv文件
reader = csv.reader(csvfile, delimiter=',') # 读取csv文件
header = next(reader) # 跳过第一行
for row in reader:
currentDate = datetime.strptime(row[0], "%Y-%m-%d") # 按格式读取时间
x.append(currentDate)
y1.append(int(row[1]))
y2.append(int(row[2]))
weather.append(row[3])
for i in weather:
if i == "晴":
s[0] = s[0] + 1
if i == "多云":
s[1] = s[1] + 1
if i == "阴":
s[2] = s[2] + 1
if i == "小雨":
s[3] = s[3] + 1
if i == "中雨":
s[4] = s[4] + 1
print(s)
fig, ax = plt.subplots() # fig画布,ax子图区域
ax.grid(True) # 打开网格
ax.grid(color='gray', ls='-.', lw=0.25) # 设置网格颜色,线型,线宽
plt.plot(x, y1, label='最高温', c='pink', zorder=1) # 绘制折线图
plt.plot(x, y2, label='最低温', c='orange', zorder=1) # 绘制折线图
plt.scatter(x, y1, marker='*', c=y1, cmap='autumn_r', zorder=2) # 绘制散点图作为折点标注
plt.scatter(x, y2, marker='o', c=y2, cmap='coolwarm', zorder=2) # 绘制散点图作为折点标注
for i in range(len(x)):
ax.text(x[i], y1[i], (y1[i]), c='steelblue', fontsize=12) # 标注各点温度
for i in range(len(x)):
ax.text(x[i], y2[i], (y2[i]), c='green', fontsize=12) # 标注各点温度
plt.title("栖霞区近日天气(数据获取时间:11月23日10时)", fontsize=14)
ax.set_xlabel("日期", fontsize=10)
ax.set_ylabel("温度", fontsize=10)
fig.autofmt_xdate(rotation=45) # 为了防止时间过长导致重叠而将其旋转45°
plt.legend()
plt.savefig('栖霞区近日天气.png')
plt.show()
fig, ax = plt.subplots() # fig画布,ax子图区域
plt.pie(s, labels=kind, autopct="%1.2f%%", explode=[0, 0, 0, 0.1, 0]) # 非零值的饼脱离整个图
plt.title("栖霞区近日天气", fontsize=24)
plt.savefig('栖霞区近日天气饼图.png')
plt.show()

效果图

栖霞区天气折线图

栖霞区天气饼状图

三、使用 Python 进行数据可视化的优势分析

1. 简单易上手

Python 语法简单的多,代码十分容易被读写,适合刚入门的新手学习。我们在处理数据的时候,一般都希望数据能够转化成可运算的数字形式,这样,不管是没学过编程的人还是学过编程的人都能够看懂这个数据。

2.Python 在数据分析和交互、探索性计算以及数据可视化等方面都显得比较活跃

python 拥有 numpy、matplotlib、scikit-learn、pandas、ipython 等工具在科学计算方面十分有优势,尤其是 pandas,在处理中型数据方面可以说有着无与伦比的优势,已经成为数据分析中流砥柱的分析工具。

3. 编程能力强大

python 有些非常强大的数据分析能力,并且还可以利用 Python 进行爬虫,写游戏,以及自动化运维,在这些领域中有着很广泛的应用,这些优点就使得一种技术去解决所有的业务服务问题,这就充分的体现的 Python 有利于各个业务之间的融合。如果使用 Python,能够大大的提高数据分析的效率。

4. 人工智能

人工智能需要的是即时性,而 Python 是一种非常简洁的语言,同时有着丰富的数据库以及活跃的社区,这样就能够轻松的提取数据,从而为人工智能做出优质的服务。

Python 语言得益于它的简单方便使得在大数据、数据分析以及人工智能方面都有十分明显的存在感,对于数据分析从业者以及想要进入数据分析从业者的人来说,简单易学容易上手的优势也是一个优势,要做好数据分析,一定要学会 Python 语言。