时间序列数据是许多领域的核心,从金融市场到气象学,都需要对时间序列数据进行分析和可视化。
Python提供了丰富的库和工具,用于处理和绘制时间序列数据。
以下8种不同的绘图类型,在分析时间序列数据比较常用。
1. 折线图
折线图是最常见的时间序列数据可视化类型之一。它显示了数据随时间的变化趋势,通常以连续的折线表示。
kotlin
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'日期': pd.date_range(start='2023-01-01', periods=30, freq='D'),
'数值': [10, 15, 13, 12, 18, 20, 22, 25, 28, 30, 35, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4]}
df = pd.DataFrame(data)
plt.plot(df['日期'], df['数值'])
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('折线图')
plt.show()
2. 散点图
散点图用于表示数据点的分布和关系,适合展示时间序列数据中的离散观测。
kotlin
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'日期': pd.date_range(start='2023-01-01', periods=30, freq='D'),
'数值': [10, 15, 13, 12, 18, 20, 22, 25, 28, 30, 35, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4]}
df = pd.DataFrame(data)
plt.scatter(df['日期'], df['数值'])
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('散点图')
plt.show()
3. 柱状图
柱状图适用于展示时间序列数据的分组或分类,通常用于比较不同时间点或不同组之间的数据。
ini
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'日期': pd.date_range(start='2023-01-01', periods=5, freq='D'),
'数值1': [10, 15, 13, 12, 18],
'数值2': [5, 8, 7, 6, 10]}
df = pd.DataFrame(data)
df.set_index('日期', inplace=True)
df.plot(kind='bar')
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('柱状图')
plt.show()
4. 面积图
面积图是折线图的一种变体,用于显示时间序列数据的趋势和数据点之间的关系。
kotlin
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'日期': pd.date_range(start='2023-01-01', periods=30, freq='D'),
'数值1': [10, 15, 13, 12, 18, 20, 22, 25, 28, 30, 35, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4],
'数值2': [5, 8, 7, 6, 10, 12, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 35, 30, 25, 20, 15, 10, 5, 4, 3, 2]}
df = pd.DataFrame(data)
plt.fill_between(df['日期'], df['数值1'], df['数值2'], color='lightblue')
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('面积图')
plt.show()
5. 箱线图
箱线图用于显示时间序列数据的统计分布,包括中位数、四分位数和异常值。
kotlin
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'日期': pd.date_range(start='2023-01-01', periods=30, freq='D'),
'数值': [10, 15, 13, 12, 18, 20, 22, 25, 28, 30, 35, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4]}
df = pd.DataFrame(data)
plt.boxplot(df['数值'])
plt.xticks([1], ['数值'])
plt.title('箱线图')
plt.show()
6. 饼图
饼图用于显示时间序列数据的占比和相对比例,适用于表示各部分在整体中的贡献。
ini
复制代码
import matplotlib.pyplot as plt
# 创建数据
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.title('饼图')
plt.show()
7. 热图
热图用于可视化时间序列数据的关系和相似性,通常用于呈现多维数据集。
ini
复制代码
import seaborn as sns
import pandas as pd
# 创建时间序列数据
data = {'时间': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'特征1': [3, 1, 4, 2, 6, 8, 7, 5, 9, 10],
'特征2': [7, 8, 6, 9, 5, 4, 2, 3, 1, 10]}
df = pd.DataFrame(data)
corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('热图')
plt.show()
8. 雷达图
雷达图用于展示多个维度的时间序列数据,比较不同类别或时间点的数据分布。
ini
复制代码
import matplotlib.pyplot as plt
import pandas as pd
# 创建时间序列数据
data = {'时间': pd.date_range(start='2023-01-01', periods=1, freq='D'),
'维度1': [3],
'维度2': [7],
'维度3': [5],
'维度4': [9],
'维度5': [6]}
df = pd.DataFrame(data)
categories = list(df.columns[2:])
values = df.iloc[:, 2:].values[0]
fig, ax = plt.subplots(figsize=(6, 6))
angles = [n / float(len(categories)) * 2 * 3.14159265359 for n in range(len(categories))]
angles += angles[:1]
plt.polar(angles, values)
plt.fill(angles, values, 'b', alpha=0.1)
plt.xticks(angles[:-1], categories)
plt.title('雷达图')
plt.show()
总结
Python进行时间序列分析的8种常见绘图类型,每种类型都具有独特的用途和适用场景。
折线图常用于展示时间序列数据的趋势和变化,散点图用于呈现离散数据点的分布。柱状图适合比较不同时间点或组之间的数据,而面积图可以突出数据点之间的关系。箱线图有助于了解数据的分布和离群值。饼图适用于显示数据占比,热图用于呈现多维数据的关系,而雷达图展示多个维度的时间序列数据。
通过运用这些绘图技巧,可以提高对时间序列数据的洞察力,发现隐藏在数据中的信息,从而做出更明智的决策和预测。
题外话
在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。
Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多
”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。
如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓