Rumah > pembangunan bahagian belakang > Tutorial Python > Menguasai Analisis Siri Masa Python: Alat dan Teknik untuk Saintis Data

Menguasai Analisis Siri Masa Python: Alat dan Teknik untuk Saintis Data

Patricia Arquette
Lepaskan: 2025-01-18 22:17:09
asal
160 orang telah melayarinya

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

Sebagai pengarang yang prolifik, saya menjemput anda untuk menerokai buku saya di Amazon. Ingat untuk mengikuti kerja saya di Medium untuk mendapatkan cerapan dan sokongan yang berterusan. Pertunangan anda tidak ternilai!

Keupayaan Python dalam analisis siri masa tidak dapat dinafikan, menawarkan ekosistem perpustakaan yang kaya dan teknik untuk pengendalian data temporal yang cekap. Sebagai seorang saintis data, saya telah menyaksikan sendiri cara menguasai alatan ini dengan ketara meningkatkan keupayaan kita untuk memperoleh cerapan bermakna dan membina model ramalan yang tepat daripada maklumat berasaskan masa.

Panda membentuk asas bagi banyak analisis siri masa berasaskan Python. DatetimeIndex dan fungsi yang berkaitan memudahkan manipulasi tarikh dan masa. Saya kerap memanfaatkan Panda untuk pembersihan data awal, pensampelan semula dan visualisasi asas. Mensampel semula data harian kepada purata bulanan, contohnya:

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

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Salin selepas log masuk
Salin selepas log masuk

Ini amat membantu apabila berurusan dengan data frekuensi tinggi yang memerlukan pengagregatan untuk analisis atau pelaporan.

Statsmodels menyediakan alat pemodelan statistik lanjutan untuk siri masa. Ia melaksanakan pelbagai model klasik, termasuk ARIMA (Autoregressive Integrated Moving Average). Memasang model 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>
Salin selepas log masuk
Salin selepas log masuk

Model ARIMA cemerlang dalam ramalan jangka pendek, menangkap arah aliran dan bermusim dengan berkesan.

Perpustakaan Nabi Facebook terkenal dengan antara muka mesra pengguna dan pengendalian bermusim yang mantap. Ia amat sesuai untuk siri masa perniagaan yang mempamerkan kesan bermusim yang kukuh dan data sejarah berbilang musim. Contoh asas Nabi:

<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>
Salin selepas log masuk
Salin selepas log masuk

Nabi mengesan musim tahunan, mingguan dan harian secara automatik, penjimat masa yang ketara dalam banyak konteks perniagaan.

Pyflux berharga untuk inferens Bayesian dan pemodelan siri masa kebarangkalian. Ia membolehkan spesifikasi model yang rumit dan menawarkan pelbagai kaedah inferens. Memasang model AR ringkas dengan Pyflux:

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

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
Salin selepas log masuk
Salin selepas log masuk

Kekuatan Pyflux terletak pada kebolehsuaiannya dan keupayaan untuk menggabungkan pengetahuan sedia ada ke dalam model.

Tslearn, pustaka pembelajaran mesin yang memfokuskan pada data siri masa, amat berguna untuk tugas seperti lesen masa dinamik dan pengelompokan siri masa. Melakukan k-means clustering:

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

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Salin selepas log masuk
Salin selepas log masuk

Ini amat berguna untuk mengenal pasti corak atau mengumpulkan siri masa yang serupa.

Darts, perpustakaan yang lebih baharu, menjadi kegemaran dengan cepat. Ia menawarkan antara muka bersatu untuk banyak model siri masa, memudahkan perbandingan kaedah ramalan yang berbeza. Membandingkan model dengan Dart:

<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>
Salin selepas log masuk
Salin selepas log masuk

Ini memudahkan percubaan pantas dengan pelbagai model, penting untuk mencari kesesuaian optimum untuk data anda.

Pengendalian berkesan terhadap nilai yang hilang adalah penting. Strategi termasuk pengisian ke hadapan/belakang:

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

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Salin selepas log masuk
Salin selepas log masuk

Imputasi yang lebih canggih menggunakan interpolasi:

<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>
Salin selepas log masuk
Salin selepas log masuk

Pengurusan bermusim ialah satu lagi aspek utama. Walaupun Nabi mengendalikan ini secara automatik, model lain memerlukan pemodelan eksplisit. Penguraian bermusim ialah satu pendekatan:

<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>
Salin selepas log masuk
Salin selepas log masuk

Penguraian ini mendedahkan corak asas dan memaklumkan pilihan pemodelan.

Penilaian ramalan yang tepat adalah penting, menggunakan metrik seperti MAE, MSE dan 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>
Salin selepas log masuk
Salin selepas log masuk

Saya sering menggabungkan metrik ini untuk penilaian prestasi yang komprehensif.

Analisis siri masa mempunyai aplikasi yang luas. Dalam kewangan, ia digunakan untuk ramalan harga saham dan penilaian risiko. Mengira statistik bergolek pada data stok:

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

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Salin selepas log masuk
Salin selepas log masuk

Dalam IoT, ia mengesan anomali dan meramalkan kegagalan peralatan. Pengesanan anomali berasaskan ambang mudah:

<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>
Salin selepas log masuk
Salin selepas log masuk

Ramalan permintaan menggunakan teknik seperti pelicinan eksponen:

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

# Backward fill
df_bfill = df.fillna(method='bfill')</code>
Salin selepas log masuk

Ini meramalkan permintaan masa hadapan berdasarkan data jualan sejarah.

Tidak pegun, di mana sifat statistik berubah dari semasa ke semasa, adalah perangkap biasa. Ujian Augmented Dickey-Fuller menyemak pegun:

<code class="language-python">df_interp = df.interpolate(method='time')</code>
Salin selepas log masuk

Siri tidak pegun mungkin memerlukan pembezaan atau transformasi sebelum pemodelan.

Outlier boleh memesongkan keputusan. Kaedah Julat Antara Kuartil (IQR) mengenal pasti potensi outlier:

<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>
Salin selepas log masuk

Mengendalikan outlier bergantung pada pengetahuan domain dan keperluan analisis.

Panda memudahkan pensampelan semula data kepada frekuensi yang berbeza:

<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>
Salin selepas log masuk

Ini berguna apabila menggabungkan data daripada pelbagai sumber atau menjajarkan data untuk analisis.

Kejuruteraan ciri mencipta ciri yang menangkap ciri penting. Mengekstrak hari dalam minggu, bulan atau suku tahun:

<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>
Salin selepas log masuk

Ciri ini selalunya meningkatkan prestasi model dengan menangkap corak kitaran.

Vector Autoregression (VAR) mengendalikan berbilang siri masa yang berkaitan:

<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>
Salin selepas log masuk

Ini memodelkan interaksi antara siri masa, yang berpotensi meningkatkan ramalan.

Python menawarkan ekosistem yang teguh untuk analisis siri masa. Daripada Panda untuk manipulasi data kepada Nabi dan Dart untuk ramalan lanjutan, perpustakaan ini menyediakan keupayaan yang hebat. Menggabungkan alatan ini dengan kepakaran domain dan pertimbangan yang teliti terhadap ciri data menghasilkan cerapan berharga dan ramalan yang tepat merentas pelbagai aplikasi. Ingat bahawa kejayaan bergantung pada pemahaman prinsip asas dan keperluan khusus masalah. Penilaian kritikal, pengesahan andaian dan penghalusan berulang adalah kunci kepada analisis siri masa yang berkesan.


101 Buku

101 Buku ialah sebuah rumah penerbitan dikuasakan AI yang diasaskan bersama oleh pengarang Aarav Joshi. Teknologi AI canggih kami mengekalkan kos penerbitan yang sangat rendah—sesetengah buku berharga serendah $4—menjadikan pengetahuan berkualiti boleh diakses oleh semua.

Terokai buku kami Kod Bersih Golang di Amazon.

Kekal dikemas kini tentang berita terkini kami. Cari Aarav Joshi di Amazon untuk menemui lebih banyak tajuk dan akses diskaun istimewa!

Penerbitan Kami

Temui penerbitan kami yang lain:

Pusat Pelabur | Pusat Pelabur (Bahasa Sepanyol) | Investor Central (Jerman) | Hidup Pintar | Epos & Gema | Misteri Membingungkan | Hindutva | Pembangunan Elit | Sekolah JS


Ikuti Kami di Sederhana

Tech Koala Insights | Dunia Epok & Gema | Medium Pusat Pelabur | Medium Misteri Membingungkan | Sains & Zaman Sederhana | Hindutva Moden

Atas ialah kandungan terperinci Menguasai Analisis Siri Masa Python: Alat dan Teknik untuk Saintis Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan