ホームページ > バックエンド開発 > Python チュートリアル > Python 時系列分析をマスターする: データ サイエンティストのためのツールとテクニック

Python 時系列分析をマスターする: データ サイエンティストのためのツールとテクニック

Patricia Arquette
リリース: 2025-01-18 22:17:09
オリジナル
195 人が閲覧しました

Mastering Python Time Series Analysis: Tools and Techniques for Data Scientists

多作な作家として、アマゾンで私の本を探索することをお勧めします。継続的な洞察とサポートのために、Medium での私の取り組みを忘れずにフォローしてください。 あなたのエンゲージメントは非常に貴重です!

時系列分析における Python の機能は否定できず、効率的な時系列データ処理のためのライブラリとテクニックの豊富なエコシステムを提供します。 データ サイエンティストとして、私はこれらのツールを使いこなすことで、意味のある洞察を導き出し、時間ベースの情報から正確な予測モデルを構築する能力がどのように大幅に向上するかを直接目撃してきました。

Pandas は、多くの Python ベースの時系列分析の基盤を形成します。 その DatetimeIndex と関連関数により、日付と時刻の操作が簡素化されます。私は事前のデータ クリーニング、リサンプリング、基本的な視覚化に Pandas を頻繁に利用しています。 日次データを月次平均にリサンプリングします。例:

<code class="language-python">import pandas as pd

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
ログイン後にコピー
ログイン後にコピー

これは、分析やレポート作成のために集計が必要な高頻度データを扱う場合に特に役立ちます。

Statsmodels は、時系列の高度な統計モデリング ツールを提供します。 ARIMA (自己回帰統合移動平均) を含む多数の古典的なモデルを実装します。 ARIMA モデルの近似:

<code class="language-python">from statsmodels.tsa.arima.model import ARIMA

# Fit the model
model = ARIMA(df['value'], order=(1,1,1))
results = model.fit()

# Make predictions
forecast = results.forecast(steps=30)</code>
ログイン後にコピー
ログイン後にコピー

ARIMA モデルは短期予測に優れ、トレンドと季節性を効果的に捉えます。

Facebook の Prophet ライブラリは、ユーザーフレンドリーなインターフェイスと堅牢な季節性処理で知られています。これは、強い季節的影響を示すビジネス時系列や複数の季節の履歴データに特に適しています。 基本的な Prophet の例:

<code class="language-python">from prophet import Prophet

# Prepare the data
df = df.rename(columns={'date': 'ds', 'value': 'y'})

# Create and fit the model
model = Prophet()
model.fit(df)

# Make future predictions
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)</code>
ログイン後にコピー
ログイン後にコピー

Prophet は、年、週、日の季節性を自動的に検出し、多くのビジネス コンテキストで大幅な時間を節約します。

Pyflux は、ベイズ推論と確率的時系列モデリングに価値があります。複雑なモデルの仕様が可能になり、さまざまな推論方法が提供されます。 Pyflux を使用した単純な AR モデルのフィッティング:

<code class="language-python">import pyflux as pf

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
ログイン後にコピー
ログイン後にコピー

Pyflux の強みは、その適応性と事前知識をモデルに組み込む能力にあります。

時系列データに焦点を当てた機械学習ライブラリである Tslearn は、動的なタイム ワーピングや時系列クラスタリングなどのタスクに特に役立ちます。 K-means クラスタリングの実行:

<code class="language-python">from tslearn.clustering import TimeSeriesKMeans

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
ログイン後にコピー
ログイン後にコピー

これは、パターンを特定したり、類似した時系列をグループ化するのに非常に役立ちます。

新しいライブラリである Darts は、すぐに人気になりつつあります。 多くの時系列モデルに統一されたインターフェイスを提供し、さまざまな予測方法の比較を簡素化します。 Darts とのモデルの比較:

<code class="language-python">from darts import TimeSeries
from darts.models import ExponentialSmoothing, ARIMA

series = TimeSeries.from_dataframe(df, 'date', 'value')

models = [ExponentialSmoothing(), ARIMA()]
for model in models:
    model.fit(series)
    forecast = model.predict(12)
    print(f"{type(model).__name__} MAPE: {model.mape(series, forecast)}")</code>
ログイン後にコピー
ログイン後にコピー

これにより、データに最適な適合性を見つけるために重要な、さまざまなモデルを使った迅速な実験が容易になります。

欠損値を効果的に処理することが不可欠です。 戦略には前方埋め込み/後方埋め込みが含まれます:

<code class="language-python">import pandas as pd

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
ログイン後にコピー
ログイン後にコピー

より高度な代入では補間を使用します。

<code class="language-python">from statsmodels.tsa.arima.model import ARIMA

# Fit the model
model = ARIMA(df['value'], order=(1,1,1))
results = model.fit()

# Make predictions
forecast = results.forecast(steps=30)</code>
ログイン後にコピー
ログイン後にコピー

季節性の管理も重要な側面です。 Prophet はこれを自動的に処理しますが、他のモデルでは明示的なモデリングが必要です。 季節分解は 1 つのアプローチです:

<code class="language-python">from prophet import Prophet

# Prepare the data
df = df.rename(columns={'date': 'ds', 'value': 'y'})

# Create and fit the model
model = Prophet()
model.fit(df)

# Make future predictions
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)</code>
ログイン後にコピー
ログイン後にコピー

この分解により、根底にあるパターンが明らかになり、モデリングの選択肢が決まります。

MAE、MSE、MAPE などの指標を使用した正確な予測評価が非常に重要です:

<code class="language-python">import pyflux as pf

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
ログイン後にコピー
ログイン後にコピー

私は、包括的なパフォーマンス評価のためにこれらの指標を組み合わせることがよくあります。

時系列分析には幅広い用途があります。金融では、株価の予測やリスク評価に使用されます。株式データのローリング統計の計算:

<code class="language-python">from tslearn.clustering import TimeSeriesKMeans

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
ログイン後にコピー
ログイン後にコピー

IoTでは、異常を検知したり、機器の故障を予測したりします。 シンプルなしきい値ベースの異常検出:

<code class="language-python">from darts import TimeSeries
from darts.models import ExponentialSmoothing, ARIMA

series = TimeSeries.from_dataframe(df, 'date', 'value')

models = [ExponentialSmoothing(), ARIMA()]
for model in models:
    model.fit(series)
    forecast = model.predict(12)
    print(f"{type(model).__name__} MAPE: {model.mape(series, forecast)}")</code>
ログイン後にコピー
ログイン後にコピー

需要予測では、指数平滑法などの手法を利用します。

<code class="language-python"># Forward fill
df_ffill = df.fillna(method='ffill')

# Backward fill
df_bfill = df.fillna(method='bfill')</code>
ログイン後にコピー

これは、過去の販売データに基づいて将来の需要を予測します。

統計的特性が時間の経過とともに変化する非定常性は、よくある落とし穴です。 拡張ディッキー・フラーテストは定常性をチェックします:

<code class="language-python">df_interp = df.interpolate(method='time')</code>
ログイン後にコピー

非定常系列では、モデリングの前に差分または変換が必要になる場合があります。

外れ値により結果が歪む可能性があります。 四分位範囲 (IQR) メソッドは、潜在的な外れ値を特定します。

<code class="language-python">from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(df['value'], model='additive')
trend = result.trend
seasonal = result.seasonal
residual = result.resid</code>
ログイン後にコピー

外れ値の処理は、ドメインの知識と分析要件によって異なります。

Pandas は、異なる周波数へのデータのリサンプリングを容易にします。

<code class="language-python">from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

mae = mean_absolute_error(actual, predicted)
mse = mean_squared_error(actual, predicted)
mape = np.mean(np.abs((actual - predicted) / actual)) * 100</code>
ログイン後にコピー

これは、さまざまなソースからのデータを組み合わせたり、分析のためにデータを調整したりするときに役立ちます。

特徴量エンジニアリングは、重要な特性を捕捉する特徴量を作成します。曜日、月、または四半期の抽出:

<code class="language-python">import yfinance as yf

# Download stock data
stock_data = yf.download('AAPL', start='2020-01-01', end='2021-12-31')

# Calculate 20-day rolling mean and standard deviation
stock_data['Rolling_Mean'] = stock_data['Close'].rolling(window=20).mean()
stock_data['Rolling_Std'] = stock_data['Close'].rolling(window=20).std()</code>
ログイン後にコピー

これらの機能は、周期的なパターンを捕捉することでモデルのパフォーマンスを向上させることがよくあります。

ベクトル自己回帰 (VAR) は、複数の関連する時系列を処理します:

<code class="language-python">def detect_anomalies(series, window_size, num_std):
    rolling_mean = series.rolling(window=window_size).mean()
    rolling_std = series.rolling(window=window_size).std()
    anomalies = series[(series > rolling_mean + (num_std * rolling_std)) | (series < rolling_mean - (num_std * rolling_std))]</code>
ログイン後にコピー

これは時系列間の相互作用をモデル化し、予測を改善する可能性があります。

Python は、時系列分析のための堅牢なエコシステムを提供します。 データ操作のための Pandas から高度な予測のための Prophet や Darts まで、これらのライブラリは強力な機能を提供します。 これらのツールをドメインの専門知識と組み合わせ、データ特性を注意深く検討することで、さまざまなアプリケーションにわたって貴重な洞察と正確な予測が得られます。 成功は、基礎となる原則と問題固有の要件を理解するかどうかにかかっています。 重要な評価、仮定の検証、反復的な改善が効果的な時系列分析の鍵となります。


101 冊

101 Books は、著者 Aarav Joshi が共同設立した AI を活用した出版社です。 当社の高度な AI テクノロジーは出版コストを大幅に抑えており、書籍によっては $4 という低価格で販売されているため、質の高い知識をすべての人が利用できるようになります。

Amazon で私たちの書籍 Golang Clean Code をご覧ください。

最新ニュースを入手してください。 Amazon で Aarav Joshi を検索すると、さらに多くのタイトルが見つかり、特別割引にアクセスできます!

私たちの出版物

他の出版物をご覧ください:

インベスターセントラル | インベスター・セントラル (スペイン語) | インベスター・セントラル (ドイツ語) | スマートな暮らし | エポックとエコー | 不可解な謎 | ヒンドゥーヴァ | エリート開発者 | JS スクール


Medium でフォローしてください

Tech Koala Insights | エポックズ&エコーズワールド | インベスター・セントラル・メディア | 不可解な謎 中 | 科学とエポックミディアム | 現代ヒンドゥーヴァ

以上がPython 時系列分析をマスターする: データ サイエンティストのためのツールとテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート