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

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

图表展示变化

很多时候,查看数据如何随时间变化比查看日常数据更有用。

有几种不同的方法可以计算和可视化数据的变化。

shift

shift函数在指定的时间之前或之后移动数据。如果我不指定时间,它将转移数据一天默认。这意味着你将获得前一天的数据。在像这样的财务数据中,把前一天的数据和今天的数据放在一起是很有帮助的。

因为这篇文章只专注于可视化,所以我将只绘制前一天的数据:

df['Change'] =df.Close.div(df.Close.shift())
df['Change'].plot(figsize=(20, 8), fontsize=16)

在上面的代码中,.div()帮助填充丢失的数据。div()的意思是“除”。df.div(6)将把df中的每个元素除以6。但这里我用的是' df.Close.shift() '因此,df的每个元素将被' df. close .shift() '的每个元素除。这样做是为了避免' shift() '操作创建的空值。

640.png

您可以简单地指定一个时间段并进行绘图以使外观更清晰。这仅是2017年的情节。

df['2017']['Change'].plot(figsize=(10, 6))

640.png

尽管这种转变在很多方面都很有用。但我发现百分比变化在很多情况下很有用。

变化百分比

我将使用开始计算的月度数据。这次我选择了条形图。它清楚地显示了百分比的变化。有一个百分比更改函数可用来获取percent_change数据。

df_month.loc[:, 'pct_change'] =df.Close.pct_change()*100fig, ax=plt.subplots()
df_month['pct_change' ].plot(kind='bar', color='coral', ax=ax)
ax.xaxis.set_major_locator(mdates.WeekdayLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d'))
plt.xticks(rotation=45)
ax.legend()

640.png

我在这里画出了封闭数据的变化百分比。这里用的是月变化百分比。

差分

差分取指定距离值的差值。默认情况下,是1。如果像“df.High.diff(2)”那样指定2,它将取‘High’列的第一个和第三个元素、第二个和第四个元素的差值,依此类推。

在数据中去除趋势是一种流行的方法。这种趋势不利于预测或建模。

df.High.diff().plot(figsize=(10, 6))

640.png

扩展窗口

另一种转变方式。它不断增加累积。例如,如果向' High '列元素添加展开函数,则第一项元素保持不变。第二个元素成为第一个和第二个元素的累积,第三个元素成为第一个、第二个和第三个元素的累积,以此类推。你也可以在上面使用聚合函数,比如平均值、中位数、标准差等等。

这样,它就能提供随时间变化的均值、中位数、和或标准差。它对财务数据、业务销售或利润数据不是很有用吗?

fig, ax=plt.subplots()
ax=df.High.plot(label='High')
ax=df.High.expanding().mean().plot(label='High expanding mean')
ax=df.High.expanding().std().plot(label='High expanding std')
ax.legend()

640.png

这里我加了均值和标准差。看看每天的数据和平均值。在2017年底,每日数据显示一个巨大的高峰。但它并没有显示平均值的峰值。如果只看2017年的数据,不断扩大的平均水平可能会有所不同。

热点图

热点图通常是一种随处使用的常见数据可视化类型。在时间序列数据中,热点图也是非常有用的。

但是在深入研究热点图之前,我们需要开发一个日历来表示我们数据集的年和月数据。让我们看一个例子。

在这个演示中,我将导入一个日历包并使用pivot表函数来生成值。

importcalendarall_month_year_df=pd.pivot_table(df, values="Open",
index=["month"],
columns=["year"],
fill_value=0,
margins=True)
named_index= [[calendar.month_abbr[i] ifisinstance(i, int) elseiforiinlist(all_month_year_df.index)]] #namemonthsall_month_year_df=all_month_year_df.set_index(named_index)
all_month_year_df

640.png

日历已经准备好了每月平均“Open”数据。现在,用它生成热点图。

ax=sns.heatmap(all_month_year_df, cmap='RdYlGn_r', robust=True, fmt='.2f', 
annot=True, linewidths=.5, annot_kws={'size':11}, 
cbar_kws={'shrink':.8, 'label':'Open'})                       
ax.set_yticklabels(ax.get_yticklabels(), rotation=0, fontsize=10)
ax.set_xticklabels(ax.get_xticklabels(), rotation=0, fontsize=10)
plt.title('Average Opening', fontdict={'fontsize':18},    pad=14);

640.png

深红色意味着非常高的数值,深绿色意味着非常低的数值。

分解图

分解将在同一个图中显示观察结果和这三个元素:

趋势:时间序列一致的向上或向下的斜率。

季节性:时间序列的明确周期模式

噪声:异常值或缺失值

使用stats模型库,很容易做到:

frompylabimportrcParamsimportstatsmodels.apiassmrcParams['figure.figsize'] =11, 9decomposition=sm.tsa.seasonal_decompose(df_month['Volume'], model='Additive')
fig=decomposition.plot()
plt.show()

640.png

趋势是移动平均线。为了让对最后一行的残差有一个高层次的概念,下面是一般公式:

原始观测值=趋势+季节性+残差

尽管关于分解的文档本身说它是一种非常简单的表示,但它仍然很流行。

总结

如果你能运行上面所有的代码,恭喜你!今天,您已经学习了足够多的时间序列数据可视化。正如我在开始时提到的,有很多很酷的可视化技术可用。

目录
相关文章
|
5天前
|
数据可视化 数据挖掘 定位技术
Python和Geopandas进行地理数据可视化
【10月更文挑战第22天】本文介绍了如何使用Python和Geopandas进行地理数据可视化和分析,涵盖从准备工作、加载数据、数据探索与处理、地理数据可视化、空间分析与查询到交互式地理数据可视化等内容。通过丰富的代码示例和案例演示,帮助读者掌握地理数据分析的基本方法,为实际应用提供支持。
40 19
|
25天前
|
机器学习/深度学习 数据采集 数据挖掘
11种经典时间序列预测方法:理论、Python实现与应用
本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。
61 2
11种经典时间序列预测方法:理论、Python实现与应用
|
16天前
|
数据可视化 数据挖掘 Python
使用Python进行数据可视化:探索与实践
【10月更文挑战第21天】本文旨在通过Python编程,介绍如何利用数据可视化技术来揭示数据背后的信息和趋势。我们将从基础的图表创建开始,逐步深入到高级可视化技巧,包括交互式图表和动态展示。文章将引导读者理解不同图表类型适用的场景,并教授如何使用流行的库如Matplotlib和Seaborn来制作美观且具有洞察力的可视化作品。
41 7
|
15天前
|
数据可视化 定位技术 Python
使用Python进行数据可视化
【10月更文挑战第22天】在这篇文章中,我们将深入探讨如何使用Python进行数据可视化。我们将从基础的图表开始,然后逐步进入更复杂的可视化技术。我们将通过实例代码来展示如何实现这些可视化,以便读者能够更好地理解和应用这些技术。
18 5
|
17天前
|
数据可视化 Python
使用Python进行数据可视化的初学者指南
【10月更文挑战第20天】本文旨在为编程新手提供一个简洁明了的入门指南,通过Python语言实现数据可视化。我们会介绍如何安装必要的库、理解数据结构,并利用这些知识来创建基本图表。文章将用通俗易懂的语言和示例代码,帮助读者快速掌握数据可视化的基础技能。
27 4
|
17天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
40 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
27天前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
28天前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
30天前
|
数据可视化 开发者 Python
使用Python进行数据可视化:从入门到精通
【10月更文挑战第7天】本文将引导您通过Python的可视化库,如Matplotlib和Seaborn,来探索和展示数据。我们将通过实际代码示例,学习如何创建各种图表,包括条形图、散点图和直方图等,并讨论如何优化这些图表以更好地传达信息。无论您是初学者还是有一定基础的开发者,这篇文章都能帮助您提高数据可视化技能。
|
1月前
|
数据可视化 Python
Python编程之数据可视化入门
【10月更文挑战第4天】在数字时代的洪流中,数据如同星辰般璀璨,而将它们绘制成图表,便是我们探索宇宙的方式。本文将带你启航,用Python这艘航船,驶向数据可视化的奥秘。我们将从安装必要的工具包开始,逐步深入到数据的呈现,最后通过代码示例点亮知识的灯塔,指引你在数据海洋中航行。让我们握紧舵盘,乘风破浪,揭开数据背后的故事吧!
下一篇
无影云桌面