Python中的时间序列数据可视化的完整指南(上)

简介: Python中的时间序列数据可视化的完整指南

640.jpg

时间序列数据在许多不同的行业中都非常重要。它在研究、金融行业、制药、社交媒体、网络服务等领域尤为重要。对时间序列数据的分析也变得越来越重要。在分析中有什么比一些好的可视化效果更好呢?没有一些视觉效果,任何类型的数据分析都是不完整的。因为一个好的情节比20页的报告更能让你理解。因此,本文是关于时间序列数据可视化的。

我将从一些非常简单的可视化开始,然后慢慢地转向一些高级的可视化技术和工具

在开始之前,我需要再弄清楚一件事。

标题中的“完整指南”并不意味着,它有所有的可视化。在这么多不同的库中有这么多的可视化方法,所以在一篇文章中包含所有这些方法是不实际的。

但是本文可以为您提供足够的工具和技术来清楚地讲述一个故事或理解和可视化时间序列数据。我试图解释一些简单的方法和一些先进的技术。

数据集

如果您正在阅读本文以进行学习,则最好的方法是自己跟踪并运行所有代码。请随时从以下链接下载数据集:

https://github.com/rashida048/Datasets/blob/master/stock_data.csv

importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf=pd.read_csv("stock_data.csv", parse_dates=True, index_col="Date")
df.head()

640.png

我在read_csv函数中使用了“ parse_dates”参数将“日期”列转换为DatetimeIndex格式。在大多数情况下,日期是以字符串格式存储的,而字符串格式不是用于时间序列数据分析的正确格式。如果采用DatetimeIndex格式,则将其作为时间序列数据进行处理将非常有帮助。

我们先从基本开始。最基本的图形应该是使用Pandas的线形图。我将在这里绘制“Volume”数据。看看它是怎样的:

df['Volume'].plot()

这是我们的“Volume”数据图,看起来有些忙碌而有一些大的峰值。将所有其他列也绘制在一个图中以同时检查所有它们的曲线将是一个好主意。

df.plot(subplots=True, figsize=(10,12))

640.png

‘Open’, ‘Close’, ‘High’ ,‘Low’ 数据的曲线形状具有相同的形状。只有“Volume”具有不同的形状。

我上面使用的折线图非常适合显示季节性。重新采样数月或数周并绘制条形图是发现季节性的另一种非常简单且广泛使用的方法。我在这里绘制2016年和2017年月份数据的条形图。对于指数,我将使用[2016:]。因为我们的数据集包含直到2017年的数据。所以,2016年末应该带来2016年和2017年。

df_month=df.resample("M").mean()fig, ax=plt.subplots(figsize=(10, 6))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
ax.bar(df_month['2016':].index, df_month.loc['2016':, "Volume"], width=25, align='center'

640.png

有24个小节。每个条代表一个月。2017年7月大幅飙升。

找到季节性的一种方法是使用一组箱线图。这里我将为每个月制作箱线图。我将使用Open’, ‘Close’, ‘High’ ,‘Low’数据来绘制这个图。。

importseabornassns#start, end='2016-01', '2016-12'fig, axes=plt.subplots(4, 1, figsize=(10, 16), sharex=True)
forname, axinzip(['Open', 'Close', 'High', 'Low'], axes):
sns.boxplot(data=df, x='Month', y=name, ax=ax)
ax.set_ylabel("")
ax.set_title(name)
ifax!=axes[-1]:
ax.set_xlabel('')

640.png

它清楚地显示了每月的价值差异。

有更多的方式来显示季节性。在本文的最后我用另一种方式进行讨论。

重采样和滚动

请记住上面的“Volume”数据的第一行图。正如我们之前讨论过的,这里数据量太大了。它可以通过重采样来修复。绘制月平均数据将在很大程度上解决这个问题,而不是绘制每日数据。为此,我将使用已经为上面的条形图和框图准备的df_month数据集。

df_month['Volume'].plot(figsize=(8, 6))

640.png

更容易理解,更清楚!它能让你更好地了解长期趋势。

重采样在时间序列数据中很常见。大多数时候重采样是在较低的频率进行。

因此,本文将只处理低频的重采样。虽然重新采样的高频率也有必要,特别是为了建模的目的。不是为了数据分析。

在我们目前正在研究的“Volume”数据中,我们可以观察到一些大的峰值。这些类型的尖峰对数据分析或建模没有帮助。通常平滑尖峰,重新采样到较低的频率和滚动是非常有用的。

现在,将日数据和周平均“Volume”画在同一幅图上。首先,使用重采样方法制作每周平均数据集。

df_week=df.resample("W").mean()

这个“df_week”和“df_month”在以后的可视化中也会很有用。

让我们把每日和每周的数据画在同一个图上。

start, end='2015-01', '2015-08'fig, ax=plt.subplots()
ax.plot(df.loc[start:end, 'Volume'], marker='.', linestyle='-', linewidth=0.5, label='Daily', color='black')
ax.plot(df_week.loc[start:end, 'Volume'], marker='o', markersize=8, linestyle='-', label='Weekly', color='coral')
label='Monthly', color='violet')
ax.set_ylabel("Open")
ax.legend()

640.png

周平均面积的峰值比日数据要小。

滚动是另一种非常有用的平滑曲线的方法。它取特定数据量的平均值。如果我想要一个7天的滚动,它会给我们7-d的平均数据。

让我们在上面的图中包含7-d滚动数据。

df_7d_rolling=df.rolling(7, center=True).mean()
start, end='2016-06', '2017-05'fig, ax=plt.subplots()
ax.plot(df.loc[start:end, 'Volume'], marker='.', linestyle='-', 
linewidth=0.5, label='Daily')
ax.plot(df_week.loc[start:end, 'Volume'], marker='o', markersize=5, 
linestyle='-', label='Weekly mean volume')
ax.plot(df_7d_rolling.loc[start:end, 'Volume'], marker='.', linestyle='-', label='7d Rolling Average')
ax.set_ylabel('Stock Volume')
ax.legend()

640.png

在这个情节中发生了很多事情。但如果你仔细看,还是可以理解的。如果你注意到7-d的滚动平均比周平均平滑一些。

使用30-d或365-d滚动平均也很常见,以使曲线更平滑。

目录
相关文章
|
3天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
15 1
|
12天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
28 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
8天前
|
数据可视化 Python
Python编程中的数据可视化技术
【9月更文挑战第19天】在数据驱动的时代,将复杂的数据集转化为直观易懂的视觉表达至关重要。本文将深入探索Python中的数据可视化库,如Matplotlib和Seaborn,并指导读者如何运用这些工具来揭示数据背后的模式和趋势。文章不仅会介绍基础图表的绘制方法,还将讨论高级技巧以提升图表的信息丰富度和吸引力。
|
4天前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
20 4
|
4天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
17 2
|
6天前
|
数据可视化 数据挖掘 Python
利用Python进行数据可视化的探索之旅
【9月更文挑战第21天】在数字化时代,数据是新的石油。然而,原始数据本身并不能直接提供洞察力或决策支持。通过将数据转化为视觉格式,我们不仅能够更直观地理解数据背后的故事,还能发现之前未曾注意到的模式和关联。本文将引导你使用Python及其强大的可视化库(如Matplotlib和Seaborn)来揭示数据的秘密。无论你是数据分析新手还是希望提升报告质量的资深分析师,跟随我们的步骤,你将能创建出既美观又富有信息量的可视化作品。
15 4
|
8天前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。
|
8天前
|
数据可视化 数据挖掘 Python
惊呆了!Python数据分析师如何用Matplotlib、Seaborn秒变数据可视化大师?
在数据驱动时代,分析师们像侦探一样在数字海洋中寻找线索,揭示隐藏的故事。数据可视化则是他们的“魔法棒”,将复杂数据转化为直观图形。本文将带你探索Python数据分析师如何利用Matplotlib与Seaborn这两大神器,成为数据可视化大师。Matplotlib提供基础绘图功能,而Seaborn在此基础上增强了统计图表的绘制能力,两者结合使数据呈现更高效、美观。无论是折线图还是箱形图,这两个库都能助你一臂之力。
25 4
|
8天前
|
数据可视化 数据挖掘 Python
告别枯燥数字,拥抱视觉盛宴!Python 数据分析中的数据可视化艺术,你 get 了吗?
在数据驱动时代,数据分析至关重要,但单纯依赖数据表格难以揭示其背后的洞见。这时,数据可视化便彰显出其重要性,尤其借助 Python 的强大工具如 Matplotlib、Seaborn 和 Plotly 等,可将数据转化为直观的图形。Matplotlib 提供高度定制的图表,Seaborn 则简化了图表美化过程。通过折线图、散点图、箱线图、小提琴图及热力图等多种图表形式,我们可以更深入地理解数据分布与关系,有效传达信息并支持决策制定。数据可视化不仅是一门技术,更是讲述数据故事的艺术。
26 3
|
14天前
|
数据可视化 数据挖掘 API
Python中的数据可视化:从基础到进阶
【9月更文挑战第13天】在数字世界中,数据可视化是连接复杂信息与人类直觉的桥梁。本文将通过Python语言,探索如何从零开始构建数据可视化技能,逐步深入到高级技巧,让你能够将抽象的数字转化为直观的故事。我们将一起学习如何使用Matplotlib、Seaborn等库来绘制图表,并最终掌握如何利用Pandas对数据集进行深度分析与可视化展示。