Python 数据可视化入门 5 - 数据可视化

힘센캥거루
2023년 11월 14일(수정됨)
8
python

在上一篇文章中,我们简单了解了如何使用 Pandas 和 Matplotlib。

这次,我们将用 Pandas 导入的 Excel 数据进行 Matplotlib 可视化

由于 Matplotlib 支持数据框,我们只需简单地在导入的 Excel 中指定 x 值和 y 值

1. 使用 Pandas 导入 Excel

好,接下来让我们从起初村开始。使用我们上次看到的山雀文件夹使用 pandas 导入按地区的高温天数

Python 数据可视化入门 5 - 数据可视化-1

然后,将我们在上一篇关于使用 Matplotlib 的文章中看到的设置韩文字体的代码复制并粘贴。

import pandas as pd

# 模块调用及韩文字体设置
import matplotlib.pyplot as plt
import matplotlib

# MacOS 字体设置
# matplotlib.rcParams["font.family"] = "AppleGothic"

# Windows 字体设置
matplotlib.rcParams["font.family"] = "Malgun Gothic"

# 字体大小设置
matplotlib.rcParams["font.size"] = 13

# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False

hot = pd.read_excel("./hot_wave.xlsx")
hot.head(3)

由于使用结构化数据,所以这样做就完成了为数据可视化做准备

现在,让我们利用这些数据绘制图表。

Python 数据可视化入门 5 - 数据可视化-2

2. 用 Matplotlib 可视化

既然已经导入了数据,那么让我们试着直接放入

像下面这样直接放入整个数据框

plt.plot(hot)

结果将得到如下图表。

你可能直觉上觉得有些不对。

Python 数据可视化入门 5 - 数据可视化-3

这是因为Excel 数据中的年份被作为 y 值

除非指定 x 轴和 y 轴,否则plot 将解释给定值为 y 值并进行显示。

Python 数据可视化入门 5 - 数据可视化-4

如图所示,将x 轴值给为按年份,y 轴值为除年份以外的所有值

plt.plot(hot["연도별"], hot.loc[:, "서울(일)":])

这一次,你会发现有些符合我们期望的图表形式

Python 数据可视化入门 5 - 数据可视化-5

3. 加工为理想形式

现在,只需将数据加工为所需形式即可放入 plot。

按照上次文章的顺序进行即可。

  1. 选择 x 轴和 y 轴 数据

  2. 设置标题

  3. 设置图例

  4. 设置坐标轴名称

  5. 座标轴间隔设置(如有必要)

  6. 更改图表样式

有关代码的详细说明,请参考上一篇文章。

本文将尽量专注于代码的应用示例

1) 选择 x 轴、y 轴数据

首先,我们计划比较首尔、大田、大邱的高温天数

由于在上面的输出中可以看到数据,轻松地用iloc 提取进行了图表绘制。

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
plt.plot(x, y)
Python 数据可视化入门 5 - 数据可视化-6

如果图表输出如下图所示,则成功。

Python 数据可视化入门 5 - 数据可视化-7

2) 设置标题

标题确定为“按地区的高温天数”

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
plt.plot(x, y)
plt.title("시도별 폭염일수") # <-- 添加!
Python 数据可视化入门 5 - 数据可视化-8

3) 设置图例

由于很难知道图表的值是什么,所以设置图例。可以使用columns轻松显示图例。

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
plt.plot(x, y, label=y.columns) # <-- 添加!
plt.legend() # <-- 添加!
plt.title("시도별 폭염일수")
Python 数据可视化入门 5 - 数据可视化-9

4) 设置坐标轴名称

为坐标轴指定名称。 x 轴是年度,y 轴是高温天数

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
plt.plot(x, y, label=y.columns)
plt.legend()
plt.title("시도별 폭염일수")
plt.xlabel("연도") # <-- 添加!
plt.ylabel("폭염일수") # <-- 添加!
Python 数据可视化入门 5 - 数据可视化-10

5) 设置轴间隔

即便如此,我仍觉得坐标间隔很不错。

我们直接跳过这一步。

6) 更改图表样式

希望图表样式在黑白情况下也能清晰区分。由于无法一次性设置样式,所以通过for 循环遍历数据列来指定样式

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
lines = ["o-", "r^:", "bd--"] # <-- 添加!
for i in range(len(y.columns)): # <-- 添加!
    plt.plot(x,y.iloc[:,i], lines[i] ,label=y.columns[i])
plt.legend()
plt.title("시도별 폭염일수")
plt.xlabel("연도")
plt.ylabel("폭염일수")
Python 数据可视化入门 5 - 数据可视化-11

4. 后期处理

若有不满意之处,稍加修改。

看图表时,我希望有一些虚线以便更清晰地查看值。

在谷歌中搜索“matplotlib grid”

Python 数据可视化入门 5 - 数据可视化-12

我们心爱的维基文档排在最前面。

进去看看吧。

Python 数据可视化入门 5 - 数据可视化-13

轻轻将内容复制,粘贴到我的代码中

当然,可以根据需要进行更改。

x = hot.iloc[:,0]
y = hot.iloc[:,[1,3,4]]
lines = ["o-", "r^:", "bd--"]
for i in range(len(y.columns)):
    plt.plot(x,y.iloc[:,i], lines[i] ,label=y.columns[i])
plt.legend()
plt.title("시도별 폭염일수")
plt.xlabel("연도")
plt.ylabel("폭염일수")
plt.grid(linestyle="--") # <-- 添加!
Python 数据可视化入门 5 - 数据可视化-14

这样我就满意了。

但为什么从 2008 年开始……?

好像太长了。

减少输出年份并更改 x 轴。

x = hot.iloc[6:,0] # <-- 添加!
y = hot.iloc[6:,[1,3,4]] # <-- 添加!
lines = ["o-", "r^:", "bd--"]
for i in range(len(y.columns)):
    plt.plot(x,y.iloc[:,i], lines[i] ,label=y.columns[i])
plt.grid(linestyle="--")
plt.legend()
plt.title("시도별 폭염일수")
plt.xlabel("연도")
plt.ylabel("폭염일수")
plt.xticks(x) # <-- 添加!

这样一来,最近 10 年的首尔、大田、大邱高温天数图表完成了。

Python 数据可视化入门 5 - 数据可视化-15

可以用于考试问题或提出所需结论时使用。

5. 总结

这次我们使用高温天数数据进行了简单的可视化

下一篇文章中,我们将解决一个相同图表的练习问题

댓글을 불러오는 중...