Netflix株の時系列分析(Pandasによる)

Time series analysis of Netflix stock (using Pandas).

はじめに

データの時系列分析は、この場合はNetflixの株式などの数字の集まりだけではありません。Pandasと組み合わさることで、複雑な世界の物語を魅力的に紡ぐ織物のようなものです。神秘的な糸のように、出来事の起伏や流れ、トレンドの上昇や下降、そしてパターンの出現を捉えます。それは、私たちの現実を形作る隠されたつながりや相関関係を明らかにし、過去の生き生きとした描写を提供し、未来の一端を垣間見るものです。

時系列分析は単なるツール以上のものです。それは知識と洞察を得るためのゲートウェイであります。時間に関するデータの秘密を解き明かし、生の情報を貴重な洞察に変える力を与え、情報をもとに妥当な決定を下し、リスクを軽減し、新しい機会を活用する手助けをします。

このエキサイティングな冒険に一緒に乗り出し、時系列分析の魅力的な領域に飛び込んでみましょう!

学習目標

  • 時系列分析の概念を紹介し、そのさまざまな分野での重要性を強調し、実際の例を示して、時系列分析の実用的な応用を紹介します。
  • Pythonとyfinanceライブラリを使用してNetflixの株式データをインポートする方法を実演することで、時系列データを取得し、分析のために準備するための必要な手順を学びます。
  • 最後に、シフト、ローリング、およびリサンプリングなどの時系列分析で使用される重要なPandas関数に焦点を当て、時系列データを効果的に操作および分析するための方法を示します。

この記事は、Data Science Blogathonの一環として公開されました。

時系列分析とは何ですか?

時系列とは、連続的かつ等間隔の時間間隔で収集または記録されたデータのシーケンスです。

  • 時系列分析は、時間によって収集されたデータポイントを分析する統計的技術です。
  • これには、データの視覚化、統計モデリング、予測方法などの技術が含まれます。
  • 順次データのパターン、トレンド、依存関係を研究し、洞察を抽出し、予測を行うことが含まれます。

時系列データの例

  1. 株式市場データ:歴史的な株価を分析してトレンドを特定し、将来の価格を予測する。
  2. 天気データ:時間の経過に伴って温度、降水量、その他の変数を研究して、気候パターンを理解する。
  3. 経済指標:GDP、インフレ率、失業率を分析して、経済のパフォーマンスを評価する。
  4. 売上データ:時間の経過に伴って売上高を調べ、パターンを特定し、将来の売上高を予測する。
  5. ウェブトラフィック:ウェブトラフィックメトリックを分析して、ユーザーの行動を理解し、ウェブサイトのパフォーマンスを最適化する。

時系列の構成要素

時系列の4つの構成要素があります。それらは次のとおりです。

  • トレンド成分:トレンドは、比較的予測可能な方法で上昇または下降する、データの長期的なパターンを表します。
  • 季節性成分:季節性は、特定の期間(日次、週次、月次、季節性など)に繰り返される定期的なパターンです。
  • 循環成分:循環成分は、ビジネスまたは経済サイクルに従うパターンに対応し、成長と減退の交互期間を特徴とします。
  • ランダム成分:ランダム成分は、トレンド、季節性、循環パターンに従わない、予測できない残余の変動を表します。

以下は、時系列の様々な構成要素の視覚的な解釈です。

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

さらなる分析のために、列を詳しく調べてみましょう。

  • 「Open」と「Close」の列は、特定の日に株価が開始された価格と終了した価格を示しています。
  • 「High」と「Low」の列は、株価が特定の日に達した最高価格と最低価格を示しています。
  • 「Volume」の列は、特定の日に取引された株式の総量に関する情報を提供します。
  • 「Adj_Close」の列は、配当、株式分割、その他の企業アクションなどの要因を考慮して、任意の取引日の株価の終値を反映します。

データについて

# print the metadata of the dataset
df.info()

# data description
df.describe()

時系列データの可視化

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

2002年から2021年まで、Netflixの株価は着実に上昇しています。今後のセクションで、Pandasを使用してさらに調査していきます。

時系列分析のためのPandas

金融モデリングに起源を持つため、Pandasは日付、時刻、時間インデックス付きのデータを効果的に操作するために特別に設計された多数のツールを提供します。さあ、時系列データを効果的に操作するために特に設計された主要なPandasデータ構造を探索してみましょう。

1.時間シフト

時間シフト、または時系列分析におけるラグまたは時間シフトとしても知られているものは、時系列データの値を時間軸で前方または後方に移動することを指します。これは、特定の期間だけシフトすることによって、時系列全体を移動させることを意味します。

以下は、時間的な調整やシフトを加える前の変更されていないデータセットです。

Original dataset

時間シフトには2つの一般的なタイプがあります。

1.1 前方シフト(正のラグ)

データを前方にシフトするには、期間(または増分)の数は正である必要があります。

df.shift(1)
After Forward Shifing

注意:シフトされたデータの最初の行には、以前の値からシフトするものがないため、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日移動ウィンドウ

注意:最初の9つの値はすべて空白になっています。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. タイムリサンプリング

タイムリサンプリングは、月次、四半期、年次などの予め決定された時間間隔にデータを集約して、基礎となる傾向の総合的なビューを提供することを目的としています。毎日データを調べる代わりに、リサンプリングは情報をより大きな時間単位に圧縮し、アナリストが日々の変動に捕らわれるのではなく、より広範なパターンや傾向に焦点を当てることができるようにします。

#年末の頻度
df.resample(rule='A').max()
リサンプルされたデータ

これにより、元のDataFrame dfが年末の頻度に基づいて再サンプリングされ、その後、各年の最大値が計算されます。これは、毎年の最高株価を分析したり、他の時系列データのピーク値を特定するのに役立ちます。

df['Adj Close'].resample(rule='3Y').mean().plot(kind='bar',figsize=(10,4))
plt.title('ネットフリックスの3年間の平均調整後終値価格')
plt.show()
Resampled data plot

この棒グラフは、2002年から2023年までの3年ごとにNetflix株価の平均Adj_Close値を示しています。

以下は、オフセット値の完全なリストです。このリストは、pandasのドキュメントでも見つけることができます。

結論

Pythonのpandasライブラリは、時系列データを効果的に分析するために豊富な機能を提供する非常に堅牢で多目的なツールセットです。この記事では、pandasの非常に高い能力をNetflix株価データを使用して扱い、可視化する方法を探求しました。

記事全体を通して、Netflix株価データを使用して、時間サンプリング、時間シフト、およびローリング分析などの重要なタスクに深入りしました。これらの基本的な操作は、時系列分析ワークフローにおける重要な最初のステップとして役立ちます。これらの技術をマスターすることにより、アナリストは貴重な洞察を得て、データから有意義な情報を抽出することができます。また、機械学習技術を使用して、次の数日間のNetflixの株価を予測することもできます。これは、洞察と分析を求める株主にとって特に有益であるでしょう。

コードと実装は、Netflixの時系列分析のGitHubにアップロードされています。

この記事が役立ったことを願っています。LinkedInで私に連絡してください。

よくある質問

この記事で表示されるメディアはAnalytics Vidhyaの所有ではなく、著者の裁量によって使用されています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more