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

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

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

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

总结

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

目录
相关文章
|
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对数据集进行深度分析与可视化展示。