Python绘制几种常见的时序分析图

这篇具有很好参考价值的文章主要介绍了Python绘制几种常见的时序分析图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时间序列数据是一种按照时间顺序排列的观测值集合,每个观测值对应于一个特定的时间点。这种数据在许多领域中都具有重要的应用价值,如金融、经济、气候科学等。通过分析时间序列数据,可以帮助我们掌握潜在的模式、发现趋势和季节性波动等重要信息。

时间序列分析是一种技术,用于评估时间序列数据,旨在确定相关的统计数据和其他数据属性。其主要目标是研究市场趋势和经济周期的关键思想,任何受到影响的具有重复模式的时间序列都可能受到影响。

可视化对于从时间序列数据中获取有洞察力的信息至关重要,它可以帮助我们理解复杂的关系并做出明智的决策。本文将介绍如何使用Python绘制几种常见的时序分析图。

数据集

数据集地址:https://github.com/jbrownlee/Datasets/blob/master/monthly-sunspots.csv
数据集变量:数据集由 2 列组成 - 从 1749 年到 1983 年的“月份”和“太阳黑子”。它基本上描述了该数据集中记录的每个月在太阳上看到的太阳黑子的数量。

1、Statsmodels库

本次用到了Statsmodels,Statsmodels库是Python中一个强大的统计分析库,包含假设检验、回归分析、时间序列分析等功能,能够很好的和Numpy和Pandas等库结合起来,提高工作效率。支持Python3.8、3.9和3.10。

安装方法

Anaconda

conda install -c conda-forge statsmodels

PyPI (pip)

pip install statsmodels

如果不能下载,则加上国内源,命令如下:

pip install statsmodels -i https://pypi.tuna.tsinghua.edu.cn/simple

从源代码安装

您需要安装C编译器来构建统计模型。如果您是从github源代码而不是源代码版本构建的,那么您还需要Cython。您可以按照下面的说明获得Windows的C编译器设置。

如果你的系统已经安装了pip、编译器和git,你可以试试:

pip install git+https://github.com/statsmodels/statsmodels

依赖库

Python >= 3.8

NumPy >= 1.18

SciPy >= 1.4

Pandas >= 1.0

Patsy >= 0.5.2

例子

import statsmodels.formula.api as smf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame({"X":np.arange(10,100,0.5)})
data["Y"] = 2 * data["X"] + 1 + np.random.randn(180)
mod = smf.ols("Y ~ X", data).fit()
print(mod.summary())


data.plot(x="X", y="Y",kind="scatter",figsize=(8,5))
plt.plot(data["X"], mod.params[0] + mod.params[1]*data["X"],"r")
plt.text(10, 38, "y="+str(round(mod.params[1],4)) + "*x" + str(round(mod.params[0],4)))
plt.title("linear regression")
plt.show()

print(mod.summary())的输出结果:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      Y   R-squared:                       1.000
Model:                            OLS   Adj. R-squared:                  1.000
Method:                 Least Squares   F-statistic:                 4.744e+05
Date:                Mon, 13 Nov 2023   Prob (F-statistic):          7.49e-307
Time:                        11:25:51   Log-Likelihood:                -256.52
No. Observations:                 180   AIC:                             517.0
Df Residuals:                     178   BIC:                             523.4
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept      1.0831      0.176      6.157      0.000       0.736       1.430
X              1.9993      0.003    688.746      0.000       1.994       2.005
==============================================================================
Omnibus:                        0.781   Durbin-Watson:                   2.104
Prob(Omnibus):                  0.677   Jarque-Bera (JB):                0.462
Skew:                           0.075   Prob(JB):                        0.794
Kurtosis:                       3.198   Cond. No.                         141.
==============================================================================

每月太阳黑子数据集,时序问题,深度学习,数据分析

时间图

代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv"
data = pd.read_csv(url, parse_dates=['Month'], index_col='Month')
print(data)
# 时间图
plt.figure(figsize=(7, 5))
plt.plot(data.index, data['Sunspots'], marker='o', linestyle='-', markersize=5)
plt.xlabel('Date')
plt.ylabel('Number of Sunspots')
plt.title('Monthly Sunspots Time Plot')
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

折线图

折线图是一种常见的数据可视化方式,它通过连接一系列数据点形成一条或多条线段来展示数据随时间或其他变量的变化趋势。折线图通常用于展示时间序列数据或其他有序数据的变化情况,例如股票价格、气温变化、销售数据等。

在折线图中,每个数据点通常表示为一个标记(如圆点、方块等),并通过直线段连接相邻的数据点。折线图的x轴通常表示时间或其他有序变量,而y轴则表示要展示的数据值。通过观察折线图的形状、趋势和波动情况,我们可以得出一些有用的信息和结论。

例如,在股票市场分析中,折线图可以用来展示股票价格的走势,帮助投资者判断股票的趋势和买卖时机;在气象学中,折线图可以用来展示气温、降雨量等气象数据的变化趋势,帮助人们更好地了解气候变化和预测天气情况。此外,折线图还可以通过添加多条折线来展示不同变量之间的关系和对比情况,例如展示不同地区的销售数据或不同产品的受欢迎程度等。

折线图是一种直观、简单的数据可视化方式,可以帮助我们更好地了解数据的变化趋势和规律,从而做出更明智的决策。
代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)
# 折线图
import matplotlib.pyplot as plt
plt.figure(figsize=(7, 5))
plt.plot(data)
plt.xlabel('Date')
plt.ylabel('Number of Sunspots')
plt.title('Monthly Sunspots Line Plot')
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

季节性图

季节性图是一种可视化时间序列数据的方式,它能够展示在特定时间间隔(如年、月、日等)内数据的重复模式。这种图通常用于观察和分析时间序列数据中的季节性变化,例如气候、销售、人口动态等。

季节性图通常以时间序列数据为x轴,以表现数值为y轴,将数据点在图上表示出来。为了更清晰地展示季节性变化,可以使用不同颜色或标记来表示每个季节的数据点。此外,可以使用趋势线或平滑曲线来拟合数据点,以帮助识别季节性模式的长期趋势。

季节性图可以用于各种领域,例如气候学、销售分析、人口统计学等。例如,在气候学中,季节性图可以用来展示气温、降雨量等气象数据的季节性变化;在销售分析中,季节性图可以用来观察商品销售在不同季节内的变化情况;在人口统计学中,季节性图可以用来展示人口数量在不同时间点的变化情况。

季节性图是一种强大的可视化工具,可以帮助我们更好地理解和分析时间序列数据中的季节性变化。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)

# 季节性图
plt.figure(figsize=(7, 5))
sns.lineplot(x=data.index.month, y=data['Sunspots'], ci=None)
plt.xlabel('Month')
plt.ylabel('Number of Sunspots')
plt.title('Seasonal Plot')
plt.xticks(range(1, 13), labels=[
    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

直方图和密度图

直方图和密度图是两种用于可视化数据分布的图形。

直方图是一种条形图,它显示了数据分布的频率。每个条形的高度表示数据值出现的次数,条形的宽度表示数据值的范围。通过观察直方图,我们可以了解数据的集中趋势、离散程度以及可能存在的异常值。在绘制直方图时,可以选择不同的颜色和柱状宽度以增强视觉效果。

密度图则是一种用于显示数据分布密度的图形。与直方图不同,密度图显示的是数据点在某个范围内的密集程度,而不是具体的数值。密度图通常用于展示数据的概率密度,特别是在大数据集或连续变量的情况下。通过观察密度图,我们可以了解数据的分布情况以及是否存在集中或离散的趋势。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)


# 直方图和密度图
plt.figure(figsize=(7, 5))
sns.histplot(data['Sunspots'], kde=True)
plt.xlabel('Number of Sunspots')
plt.ylabel('Frequency')
plt.title('Histogram and Density Plot')
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

自相关图

自相关图是一个平面二维坐标悬垂线图。横坐标表示延迟阶数,纵坐标表示自相关系数。它是一个重要的统计工具,用于分析时间序列数据的重复模式和周期性趋势。通过观察自相关图,我们可以确定数据之间的相似性如何随时间变化,并以此为基础进行预测或解释。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)

# 自相关图
# plt.figure(figsize=(7,5))
plot_acf(data['Sunspots'], lags=50)
plt.xlabel('Lags')
plt.ylabel('Autocorrelation')
plt.title('Autocorrelation Plot')
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

PACF图

PACF图是指偏自相关函数图,它衡量的是任意时间点与该时间点前的一段时间内的观测值的相关程度,并消除了其他滞后值的影响。偏自相关函数(PACF)衡量的是在控制了所有更短滞后的影响后,一个时间序列和它自身滞后版本之间的相关性。

在PACF图中,x轴代表滞后数,y轴代表偏自相关系数。与ACF图类似,PACF图中的每一个滞后数都有一个代表偏自相关系数的垂直线,同时还有两条水平蓝线表示置信区间。

通过对ACF图和PACF图的分析,可以得出数据可能适合的模型。例如,如果ACF图在某个点上截尾,而PACF图在该点后呈现出拖尾的形式,那么数据可能适合AR模型。如果ACF图在某个点后呈现出拖尾的形式,而PACF图在该点上截尾,那么数据可能适合MA模型。如果ACF图和PACF图都呈现出拖尾的形式,那么数据可能适合ARMA模型。

PACF图是一种分析时间序列数据的重要工具,可以帮助我们更好地理解数据的内在结构和关系。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)

# PACF图
# plt.figure(figsize=(7, 5))
plot_pacf(data['Sunspots'], lags=50)
plt.xlabel('Lags')
plt.ylabel('Partial Autocorrelation')
plt.title('Partial Autocorrelation Function (PACF) Plot')
plt.grid(True)
plt.show()

极坐标图

极坐标图是一种用于表示方向性和距离信息的图形,常用于表示地理信息系统中的数据。在极坐标图中,每个点都有一个相对于极点的距离和角度信息,可以用来表示地理信息中的经纬度、方向和高度等数据。

在极坐标图中,角度通常以正北方向为0度,顺时针方向增加角度值。距离则通常以极点为原点,向各个方向延伸,单位可以根据需要进行设定。

极坐标图可以用于各种领域,例如物理学、工程学、地球物理学等。在地球物理学中,极坐标图可以用于表示地震数据、地磁数据等,以便更好地分析和研究地球的物理性质。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)

# 从上述数据集“Monthly Sunspots”的索引中提取月份和年份
data['Month_Num'] = data.index.month

# 按月份对数据进行分组,计算每个月的平均太阳黑子数
monthly_average = data.groupby('Month_Num')['Sunspots'].mean()

# 极坐标图θ(角度)和半径(长度)设置
theta = np.linspace(0, 2 * np.pi, len(monthly_average))
radii = monthly_average.values

# 极坐标图
plt.figure(figsize=(7, 5))
plt.polar(theta, radii)
plt.title('Polar Plot of Monthly Average Sunspots')
plt.xticks(theta, ['Jan', 'Feb', 'Mar', 'Apr', 'May',
        'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])

# 设置y轴限制以适应数据
plt.ylim(0, radii.max() + 10)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

移动平均线图

移动平均线图是一种常用的技术分析工具,它通过计算一系列连续价格数据的平均值,以反映市场趋势和价格波动情况。在移动平均线图中,通常会绘制一组不同周期的移动平均线,以反映市场在不同时间段内的平均成本和趋势。

移动平均线图可以用于股票、期货、外汇等交易市场,以帮助交易者更好地把握市场趋势和价格波动情况。在移动平均线图中,不同周期的移动平均线会以不同颜色的线条表示,以方便交易者进行比较和分析。

通过观察移动平均线图,交易者可以发现市场中的趋势和转折点,以及价格波动的情况。例如,当短期移动平均线向上穿过长期移动平均线时,可能预示着市场即将上涨;而当短期移动平均线向下穿过长期移动平均线时,可能预示着市场即将下跌。此外,交易者还可以通过观察不同周期的移动平均线来分析市场的支撑和压力位,以及趋势的持续时间和强度。

移动平均线图是一种重要的技术分析工具,可以帮助交易者更好地理解市场趋势和价格波动情况,从而做出更明智的交易决策。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf


# 加载每月太阳黑子数据集
data = pd.read_csv("monthly-sunspots.csv", parse_dates=['Month'], index_col='Month')
print(data)




# 移动平均线图
plt.figure(figsize=(7, 5))
values = data['Sunspots']

# 7天移动平均线
rolling_mean = values.rolling(window=7).mean()
plt.plot(values, label='Original')
plt.plot(rolling_mean, label='7-day Moving Average', color='red')
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Moving Average Plot')
plt.legend()
plt.grid(True)
plt.show()

每月太阳黑子数据集,时序问题,深度学习,数据分析

参考文章:https://mp.weixin.qq.com/s/4tZan5-1X94oITmCCLshOw文章来源地址https://www.toymoban.com/news/detail-853254.html

到了这里,关于Python绘制几种常见的时序分析图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python操作PDF的几种常见方法

    大家好,有关python操作pdf的方法,各种语言处理起来都比较麻烦,而且各种第三方库的应用场景都不同。下面说明一下python如何通过第三方库如何处理pdf文件。 1.1、pdfplumber提取文本内容 安装pdfplumber pdfplumber提取PDF中文字代码思路如下 利用pdfplumber打开一个 PDF 文件 获取指定

    2024年02月03日
    浏览(43)
  • python数据分析之产品销量时序分析与商品关联分析

    这是我们之前的课后作业,根据自己的想法对这个数据进行分析,只要求写出五个点出来就可以了,因此我就对这些数据进行了分析一番。涉及的python知识点还是挺多的,包括了python连接数据库,SQL提取数据并保存为csv格式,pandas处理数据,matplotlib画图以及购物篮分析与关联

    2024年02月07日
    浏览(48)
  • matplotlib绘制位置-时序甘特图

    这篇文章的目的是,总结记录一次使用matplotlib绘制时序甘特图的经历。之所以要绘制这个时序甘特图,是因为22年数模研赛C题需要用到,用于更好地呈现求解的车身缓冲区调序优化结果。 首先,我们觉得在这篇博客中出现的下面这张图展示效果很好,于是也想绘制一张。 这

    2024年02月12日
    浏览(32)
  • [数据分析与可视化] 基于Python绘制简单动图

    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。 Matplotlib的Animations模

    2024年02月03日
    浏览(42)
  • [数据分析与可视化] Python绘制数据地图3-GeoPandas使用要点

    本文主要介绍GeoPandas的使用要点。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas。GeoPandas的官方文档地址为:GeoPandas-doc。本文主要参考GeoPandas Examples Gal

    2024年02月09日
    浏览(42)
  • [数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

    MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。它提供了一组强大的工具,可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas,用户可以轻松地处理和分析移动对象数据,并从中提取有关行为、模式和趋势的见

    2024年02月14日
    浏览(42)
  • Verilog:【7】超详细WaveDrom教程,时序图绘制利器,看这一篇就够了。

    碎碎念: 没想到上一篇发出去,前几个小时竟然基本没人看,是我写得太晦涩了吗,这篇介绍个简单但是相当好用的软件WaveDrom,可以非常方便的绘制时序图,简直是数字人的福音啦! 本文将从安装开始,详细介绍涉及到的语法等内容,读者可以收藏起来随时查阅。 P.S. 照这

    2024年02月03日
    浏览(49)
  • python数据分析-matplotlib散点图-条形图的绘制以及完整方法归纳02

    散点图的绘制使用的是scatter()方法,传入的参数也是两个列表,分别为x,y坐标轴的值使用散点图可以显示若干数列序列中各数值之间是否存在相关性. 1.导入模块 from matplotlib import pyplot as plt import matplotlib 2.设置散点图所有字符的字体样式 matplotlib.rcParams[‘font.family’] = ‘Microsof

    2023年04月11日
    浏览(45)
  • [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化

    本文主要介绍GeoPandas结合matplotlib实现地图的基础可视化。GeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas。GeoPandas的官方文档地址为:GeoPandas-doc。关于Geo

    2023年04月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包