微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍,因为它可以准确预测趋势并做出明智的决策。在本教程中将使用Python来探索经济和金融数据,执行统计分析,并创建时间序列预测。

我们将在本教程中使用NumPy、Pandas和Matplotlib等不同的Python库来完成本教程。此外,我们还将介绍 yfinance 库,我们将使用它来从Yahoo Finance下载金融数据。

在开始之前,安装必要的库。打开终端并运行以下命令:

!pip install pandas numpy matplotlib yfinance

接下来,打开一个新的Jupyter Notebook或你选择的任何Python环境,我们可以开始实现我们的代码。

为了演示如何使用Python进行时间序列分析和预测,我们将使用微软公司的每日调整收盘价,这些数据由Yahoo Finance提供。在下载数据之前,让我们导入所需的库:

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
# 设置可视化的样式。
plt.style.use('fivethirtyeight')

接下来,让我们定义微软公司的股票代码、开始和结束日期。

# 定义股票代码并下载数据。
MSFT = yf.download('MSFT', start='2010-01-01', end='2022-06-30')

yfinance库提供了一种简单的方法来下载特定股票代码的金融数据。开始和结束日期表示我们要下载的数据时间段,在本例中为2010年1月至2022年6月。

探索性数据分析

现在我们已经下载了数据,让我们探索一下数据以更好地了解它的结构和特征。我们可以使用Pandas来分析数据。

# 显示数据的前5行。
print(MSFT.head())
# 显示数据的统计摘要。
print(MSFT.describe())

第一行代码将数据的前5行输出到控制台。它给我们一个快速查看数据的结构——显示日期、开盘价、最高价、最低价、收盘价和调整后的收盘价。

第二行代码提供了数据的统计摘要,显示计数、平均值、标准差、最小值、最大值和四分位数值。

接下来,让我们绘制每日调整后的收盘价,使数据可视化。

# 绘制微软公司的调整后收盘价。
plt.figure(figsize=(12,6))
plt.plot(MSFT['Adj Close'], label='Adjusted Close')
plt.title('Microsoft Adjusted Close Price')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price ($)')
plt.legend(loc='upper left')
plt.xticks(rotation=45)
plt.show()

通过查看图表,我们可以观察到微软公司的调整后收盘价在过去曾经有过一些下跌,特别是在2008年的全球金融危机期间。然而,这个值后来增长了很多,反映出一个积极的趋势。

为了更好地了解这些趋势,让我们考虑计算并绘制移动平均线。

# 计算短期移动平均线'MA20'。
MSFT['MA20'] = MSFT['Adj Close'].rolling(window=20).mean()
# 计算长期移动平均线'MA50'。
MSFT['MA50'] = MSFT['Adj Close'].rolling(window=50).mean()
# 绘制微软调整后的收盘价和移动平均线。
plt.figure(figsize=(12,6))
plt.plot(MSFT['Adj Close'], label='Adjusted Close')
plt.plot(MSFT['MA20'], label='MA20')
plt.plot(MSFT['MA50'], label='MA50')
plt.title('Microsoft Adjusted Close Price with Moving Averages')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price ($)')
plt.xticks(rotation=45)
plt.legend(loc='upper left')
plt.show()

上述代码计算了短期(20天窗口)和长期(50天窗口)移动平均线,并将它们与每日调整后的收盘价一起绘制出来。

我们可以看到,移动平均线的变化不大,能更好地反映股票的整体趋势。MA20的趋势似乎与股价趋势非常接近,而MA50让我们对股票的长期趋势有了大致的了解。

时间序列分析

接下来,我们需要进行时间序列分析,以深入了解数据的时间行为。自相关函数(ACF)和偏自相关函数(PACF)用于识别连续观测值和预测值之间的关系。我们可以使用statsmodels库来计算ACF和PACF。

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# 绘制自相关和偏自相关函数
fig, ax = plt.subplots(2, figsize=(12,6))
plot_acf(MSFT['Adj Close'], lags=20, ax=ax[0])
plot_pacf(MSFT['Adj Close'], lags=20, ax=ax[1])
plt.show()

上面的代码绘制了微软公司调整后的收盘价的ACF和PACF,滞后期最长为20。

从ACF图中,我们可以观察到自相关值在缓慢下降。PACF图表明只有在滞后1时期,才存在显著的自相关性,这表明第一个滞后期或时间段与当前观察值具有最强的相关性。

现在我们已经分析了数据并了解了其结构和趋势,让我们使用Prophet库进行一些预测。

!pip install prophet
from prophet import Prophet

首先,我们将创建一个新的DataFrame,仅捕获我们分析所需的列。

# 创建一个新的DataFrame
data = MSFT.loc[:, ['Adj Close']]
data.head()

接下来,我们将重命名列以适应Prophet的命名约定。

# 重命名列以适应Prophet的命名约定
data = data.reset_index()
data = data.rename(columns={'Date':'ds', 'Adj Close':'y'})
data.head()

上述代码将DataFrame中必要的列重命名以适应Prophet的命名约定。ds列表示日期,而y列表示我们要预测的值。

现在,我们将数据拆分为训练集和测试集,并使用Prophet库进行预测。

train_data = data[data['ds'] < '2021-07-01']
test_data = data[data['ds'] >= '2021-07-01']
# 创建模型并拟合训练数据
model = Prophet()
model.fit(train_data)
# 定义一个与预测范围一致的新的DataFrame
future = test_data[['ds']]
forecast = model.predict(future)
# 绘制预测图
model.plot(forecast)
plt.title('Microsoft Adjusted Close Price: Actual vs. Forecast')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price ($)')
plt.show()

上述代码创建了一个Prophet模型并拟合训练数据。未来的DataFrame用ds列表示我们的预测日期。然后我们进行预测,并将结果保存在forecast DataFrame中。最后,我们使用模型的plot()函数绘制预测图。

我们可以观察到,该模型准确地跟踪了整体趋势并捕捉了主要的低谷和高峰。

时间序列分析和预测是获得不同领域数据洞察力的重要统计技术。在本教程中,从雅虎金融收集数据,并使用Python进行数据分析,包括探索性数据分析和预测。

本文演示了各种可视化技术,例如绘制移动平均线、ACF和PACF图。同时还进行了时间序列预测,这在金融和经济中是做出明智的投资决策所必需的。

IT BOOK 多得(点击查看5折活动书单)icon-default.png?t=N7T8https://u.jd.com/psx2y1M

《Python数据分析从入门到精通》

《Python数据分析从入门到精通》全面介绍了使用Python进行数据分析所必需的各项知识。全书共分为14章,包括了解数据分析、搭建Python数据分析环境、Pandas统计分析、Matplotlib可视化数据分析图表、Seaborn可视化数据分析图表、第三方可视化数据分析图表Pyecharts、图解数组计算模块NumPy、数据统计分析案例、机器学习库Scikit-Learn、注册用户分析(MySQL版)、电商销售数据分析与预测、二手房房价分析与预测,以及客户价值分析。

该书所有示例、案例和实战项目都提供源码,另外该书的服务网站提供了模块库、案例库、题库、素材库、答疑服务,力求为读者打造一本“基础入门+应用开发+项目实战”一体化的Python数据分析图书。

《Python数据分析从入门到精通》内容详尽,图文丰富,非常适合作为数据分析人员的学习参考用书,也可作为想拓展数据分析技能的普通职场人员和Python开发人员学习参考用书。

《Python数据分析从入门到精通》icon-default.png?t=N7T8https://item.jd.com/13288736.html

《活学活用Pandas,简化数据探索性分析》

《迭代vs向量化,如何提升Pandas性能?》

《云计算+数据科学,5步带你突破信息泛滥(下)》

《云计算+数据科学,5步带你突破信息泛滥(上)》

《火眼金睛,带你了解数据科学中的异常检测》

《快来体验PandasAI数据分析,将Pandas和ChatGPT结合起来》

1.背景介绍 随着国家对新建商品房市场调控力度的加大和存量房市场的逐步扩大,二手房市场将逐步发育成熟,成为与一手房市场相竞争和共存的市场形态。在二手房交易市场在不断发展的进程中,始终存在着房地产经纪机构规模小、经营为不规范、人员素质偏低、业诚信经营状况令人堪忧。然而,二手房交易市场是伴随着我国住房制度改革诞生的新兴市场,存在问题是不可避免的,但我国二手房交易市场的发展前景十分广阔,目前政府相关部门正在采取各项措施,培育和完善二手房交易市场。 2.研究方法与技术路线 通过爬虫收集成都主城区范围内二手房数据信息,数据可视化探索影响房价的重要因素,对数据建模,通过购房需求,预测房价。 二、数据预处理 3.数据说明 本次爬取到的成都二手房数据共三万余条,获取的信息包括:总价格,每平方单价,小区名,小区位置,房屋地址,房屋户型,所在楼层,建筑面积,户型结构,套内面积,建筑类型,房屋朝向,建筑结构,装修情况,梯户比例,是否配备电梯,挂牌时间,交易权属,上次交易,房屋用途,房屋年限,产权所属,抵押信息。其中房价的单位为万,面积单位为平方米。 4.数据清洗 由于原始数据中含有特殊符号或者数字后跟
Python数据分析和处理方面具有广泛的应用,下面是对这个过程的描述: 数据获取:首先,需要获取要分析和处理的数据。这可以包括从数据库、文件(如CSV、Excel等)、API接口或网络爬取等方式获取数据数据清洗与预处理:对于获取的数据,可能存在缺失值、异常值、重复值等问题。在数据分析前,需要进行数据清洗和预处理,包括填充缺失值、处理异常值、去除重复值等操作。 数据探索与可视化:通过使用Python中的数据分析库(如Pandas、NumPy)和可视化库(如Matplotlib、Seaborn)对数据进行探索和可视化。这包括统计摘要、数据分布、相关性分析、绘制图表等。 特征工程:在一些情况下,需要对原始数据进行特征提取、转换和选择,以便更好地适应机器学习算法或模型。例如,通过编码分类变量、进行特征缩放或选择最具影响力的特征等操作。 数据建模与分析:使用Python中的机器学习库(如Scikit-learn、TensorFlow)或统计库(如Statsmodels)构建模型并进行数据分析。这可能涉及训练模型、模型评估、预测和推断等操作。 结果解释与报告:根据分析结果,解释和
1、**国内金融安全网**(原则:事前防范金融风险过度积累,事中、事后快速高效处置风险):1)强化金融机构的公司治理和风险管理(如重组与否)2)二加强金融监管(各种存贷款办法) 3)强化处置资源保障(保险基金)4)发挥好最后贷款人职能(向不具有清偿力的银提供援助)5)强化金融稳定的法治保障(制定《金融稳定法》) 2、工商银广州逢源路支**适老化**:“进门扶一把、等候一杯茶、座椅有软垫、到号有提醒、现金有纸袋、出门有送别”的“六温馨”服务(感情的牵绊有时候远超想象,尤其是在强调数字员工的当下)
时间序列分析预测Python中有多种方法和代码可以实现。其中一种常用的方法是使用Statsmodels库。下面是一个示例代码,展示了如何进行时间序列的分解和预测: ```python import pandas as pd import statsmodels.api as sm # 读取时间序列数据 data = pd.read_csv('data.csv', parse_dates=['date'], index_col='date') # 进行时间序列的分解 decomposition = sm.tsa.seasonal_decompose(data, model='additive') # 获取分解后的趋势、季节性和残差 trend = decomposition.trend seasonal = decomposition.seasonal residual = decomposition.resid # 进行时间序列的预测 model = sm.tsa.ARIMA(data, order=(1, 1, 1)) model_fit = model.fit(disp=0) forecast = model_fit.predict(start='2022-01-01', end='2022-12-31') # 打印预测结果 print(forecast) 在这个示例中,首先使用`pd.read_csv`函数读取时间序列数据,并将日期列解析为日期格式,并将日期列设置为索引列。然后使用`sm.tsa.seasonal_decompose`函数对时间序列进行分解,得到趋势、季节性和残差。接下来,使用`sm.tsa.ARIMA`函数构建ARIMA模型,并使用`fit`方法拟合模型。最后,使用`predict`方法对指定日期范围内的时间序列进行预测。 请注意,上述代码只是一个示例,具体的时间序列分析预测方法可能会因数据的性质和要求而有所不同。你可以根据自己的需求和数据特点选择适合的方法和代码进行时间序列的分析和预测