Press "Enter" to skip to content

使用Pandas进行Netflix股票的时间序列分析

介绍

数据的时间序列分析不仅仅是一堆数字,比如Netflix的股票。它是一张迷人的织锦,用Pandas编织着我们的世界的错综复杂的故事。就像一根神秘的线,它捕捉了事件的涨落、趋势的兴衰以及模式的出现。它揭示了隐藏的联系和相关性,塑造了我们过去的形象,并提供了对未来的一瞥。

时间序列分析不仅仅是一种工具。它是通往知识和远见的门户。您将有能力解锁隐藏在数据时间织物中的秘密,将原始信息转化为有价值的见解。此外,它还能帮助您做出明智的决策,减轻风险并利用新兴机会。

让我们一起踏上这个激动人心的冒险之旅,发现时间真正是理解我们的世界的关键。您准备好了吗?让我们一起潜入时间序列分析的迷人领域吧!

使用Pandas进行Netflix股票的时间序列分析 数据科学 第1张

学习目标

  • 我们的目标是介绍时间序列分析的概念,强调其在各个领域的重要性,并展示展示实际应用时间序列分析的真实世界示例。
  • 我们将通过展示如何使用Python和yfinance库导入Netflix股票数据来提供实际演示。这样读者将学习获取时间序列数据并为分析做准备的必要步骤。
  • 最后,我们将重点介绍时间序列分析中使用的重要Pandas函数,例如移位、滚动和重新采样,这些函数能够有效地操作和分析时间序列数据。

本文是数据科学博客马拉松的一部分。

什么是时间序列分析?

时间序列是在连续、等间隔的时间间隔内收集或记录的数据点序列。

  • 时间序列分析是一种用于分析随时间收集的数据点的统计技术。
  • 它涉及研究顺序数据中的模式、趋势和依赖关系,以提取见解并进行预测。
  • 它涉及数据可视化、统计建模和预测方法等技术,以有效地分析和解释时间序列数据。

时间序列数据的例子

  1. 股票市场数据:分析历史股价以识别趋势和预测未来价格。
  2. 天气数据:研究温度、降水和其他变量随时间的变化,以了解气候模式。
  3. 经济指标:分析GDP、通货膨胀率和失业率等,以评估经济表现。
  4. 销售数据:检查销售数据随时间的变化,以确定模式并预测未来销售额。
  5. 网站流量:分析网站流量指标,以了解用户行为并优化网站性能。

时间序列的组成部分

时间序列有4个组成部分。它们是:

  • 趋势组成部分:趋势代表数据中的长期模式,以相对可预测的方式向上或向下移动。
  • 季节性组成部分:季节性是一种定期重复的模式,例如每日、每周、每月或每季度。
  • 周期性组成部分:周期性组成部分对应于遵循商业或经济周期的模式,其特点是增长和衰退的交替时期。
  • 随机组成部分:随机组成部分代表数据中不符合趋势、季节性或周期性模式的不可预测和残余波动。

下图是时间序列不同组成部分的视觉解释。

使用Pandas进行Netflix股票的时间序列分析 数据科学 第2张

在Python中使用yfinance

现在让我们看一下yfinance的实际用途。首先,我们将使用以下命令下载yfinance库。

安装

!pip install yfinance

请注意,如果您在本地机器上运行此代码时出现任何错误,例如在Jupyter Notebook中,您有两个选择:要么更新Python环境,要么考虑使用云笔记本,例如Google Colab作为替代解决方案。

导入库

import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime

使用Yahoo Finance下载Netflix财务数据集

在此演示中,我们将使用Netflix的股票数据(NFLX)

NETFLIX
df =  yf.download(tickers = "NFLX")
df

使用Pandas进行Netflix股票的时间序列分析 数据科学 第4张

让我们详细检查列以进行进一步分析:

  • “Open”“Close”列显示某一天股票的开盘价和收盘价。
  • “High”“Low”列分别表示该股票在特定日期达到的最高和最低价格。
  • “Volume”列提供有关特定日期交易的股票总成交量的信息。
  • “Adj_Close”列表示调整后的收盘价,考虑到股息、股票拆分或其他公司行动等因素,反映了任何给定交易日的股票收盘价。

关于数据

# 打印数据集的元数据
df.info()

# 数据描述
df.describe()

使用Pandas进行Netflix股票的时间序列分析 数据科学 第5张

使用Pandas进行Netflix股票的时间序列分析 数据科学 第6张

可视化时间序列数据

df['Open'].plot(figsize=(12,6),c='g')
plt.title("Netlix's Stock Prices")
plt.show()

使用Pandas进行Netflix股票的时间序列分析 数据科学 第7张

从2002年到2021年,Netflix的股价稳步上涨。我们将使用Pandas在接下来的几节中进一步研究它。

Pandas进行时间序列分析

由于其在金融建模中的根源,Pandas为处理日期、时间和时间索引数据提供了丰富的工具。现在,让我们探索专门设计用于有效处理时间序列数据的关键Pandas数据结构。

1. 时间转移

时间转移,也称为时间序列分析中的滞后或时间转移,指将时间序列的值向前或向后移动。它涉及将整个系列按特定的周期向前或向后移动。

下面是在进行任何时间调整或转移之前未经修改的数据集:

原始数据集

有两种常见的时间转移类型:

1.1 向前转移(正向滞后)

要将数据向前移动,周期数(或增量)必须为正数。

df.shift(1)
向前转移后

注意: 移位数据中的第一行包含NaN值,因为没有前一个值可以进行移位。

1.2 向后移位(负滞后)

要向后移动数据,周期数(或增量)必须为负数。

df.shift(-1)
向后移位后

注意: 移位数据中的最后一行包含NaN值,因为没有后续值可以进行移位。

2. 滚动窗口

滚动是一种强大的转换方法,用于平滑数据并减少噪音。它通过将数据分成窗口并应用聚合函数(例如

mean(), median(), sum()等)来操作每个窗口内的值。

df['Open:10 days rolling'] = df['Open'].rolling(10).mean()
df[['Open','Open:10 days rolling']].head(20)
df[['Open','Open:10 days rolling']].plot(figsize=(15,5))
plt.show()
10天滚动的窗口

注意: 前面九个值都变为空白,因为使用十天的窗口时没有足够的数据来填充它们。

10、20、50和100天的滚动窗口绘图
df['Open:20'] = df['Open'].rolling(window=20,min_periods=1).mean()
df['Open:50'] = df['Open'].rolling(window=50,min_periods=1).mean()
df['Open:100'] = df['Open'].rolling(window=100,min_periods=1).mean()
#visualization
df[['Open','Open:10','Open:20','Open:50','Open:100']].plot(xlim=['2015-01-01','2024-01-01'])
plt.show()

它们通常用于在时间序列分析中平滑绘图。可以减少数据中的固有噪声和短期波动,从而使潜在趋势和模式的可视化更清晰。

3. 时间重采样

时间重采样涉及将数据聚合到预定时间间隔(例如每月、每季度或每年)中,以提供对潜在趋势的概述视图。重新采样将信息压缩到较大的时间单位中,使分析师能够专注于更广泛的模式和趋势,而不会陷入日常波动。

#year end frequency
df.resample(rule='A').max()
重新采样的数据
df['Adj Close'].resample(rule='3Y').mean().plot(kind='bar',figsize=(10,4))
plt.title('Netflix 3年平均调整收盘价')
plt.show()
重采样数据绘图

这个柱状图展示了 Netflix 股票价格的每三年平均 Adj_Close 值,从 2002 年到 2023 年。

下面是偏移量的完整列表。该列表也可以在 pandas 文档中找到。

结论

Python 的 pandas 库是一个非常强大和多才多艺的工具集,提供了大量内置函数,有效地分析时间序列数据。在本文中,我们探索了 pandas 处理和可视化时间序列数据的巨大能力。

在整篇文章中,我们深入研究了使用 Netflix 股票数据进行时间采样、时间移位和滚动分析等基本任务。这些基本操作是任何时间序列分析工作流程中至关重要的初始步骤。通过掌握这些技术,分析师可以从数据中获得有价值的洞察和提取有意义的信息。我们还可以通过使用机器学习技术预测未来几天 Netflix 的股票价格。这对寻求洞察和分析的股东来说尤为重要。

代码和实现已上传至 Github 的 Netflix 时间序列分析。

希望您觉得本文有用。在 LinkedIn 上与我联系。

常见问题解答

本文中显示的媒体不归 Analytics Vidhya 所有,仅在作者自行决定下使用。

Leave a Reply

Your email address will not be published. Required fields are marked *