時系列データの取り扱い

PythonPythonBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python パッケージの Pandas を使って時系列データを扱う方法を学びます。このチュートリアルでは、大気質データを使います。文字列を日付時刻オブジェクトに変換し、これらの日付時刻オブジェクトに対して操作を行い、時系列を別の頻度にリサンプリングする方法などを学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 94%です。学習者から 94% の好評価を得ています。

必要なライブラリをインポートしてデータを読み込む

まず、必要な Python ライブラリをインポートして、大気質データを読み込む必要があります。このデータは、2 次元のラベル付きデータ構造である pandas の DataFrame に読み込まれます。

## 必要なライブラリをインポートする
import pandas as pd
import matplotlib.pyplot as plt

## 大気質データを読み込む
air_quality = pd.read_csv("data/air_quality_no2_long.csv")

## "date.utc" 列を "datetime" にリネームする
air_quality = air_quality.rename(columns={"date.utc": "datetime"})

文字列を日付時刻オブジェクトに変換する

「datetime」列の日付は現在文字列です。これらを日付時刻オブジェクトに変換して、操作を簡単にするためです。

## "datetime" 列を日付時刻オブジェクトに変換する
air_quality["datetime"] = pd.to_datetime(air_quality["datetime"])

測定月の新しい列を追加する

今、DataFrame に、各測定の月のみを含む新しい列を追加したいと思います。これは、dt アクセサを使って達成できます。

## 各測定の月の新しい列を追加する
air_quality["month"] = air_quality["datetime"].dt.month

週の各日における平均 NO2 濃度を計算する

これで、各測定地点における週の各日の平均 NO2 濃度を計算することができます。これは、groupby メソッドを使って行うことができます。

## 週の各日における平均 NO2 濃度を計算する
average_NO2 = air_quality.groupby([air_quality["datetime"].dt.weekday, "location"])["value"].mean()

1 日の各時間における平均 NO2 値をプロットする

1 日の各時間における平均 NO2 値をプロットすることもできます。これは、plot メソッドを使って行うことができます。

## 1 日の各時間における平均 NO2 値をプロットする
fig, axs = plt.subplots(figsize=(12, 4))
air_quality.groupby(air_quality["datetime"].dt.hour)["value"].mean().plot(kind='bar', rot=0, ax=axs)
plt.xlabel("Hour of the day")
plt.ylabel("$NO_2 (µg/m^3)$")

時系列データをリサンプリングする

resample メソッドは、時系列データの頻度を変更する強力な方法です。ここでは、現在の毎時の時系列データを各測定地点で月間最大値に集約します。

## データをピボットすることで、日付時刻情報が表のインデックスになりました。
no_2 = air_quality.pivot(index="datetime", columns="location", values="value")
no_2.head()

## 5 月 20 日から 5 月 21 日の終わりまでの異なる測定地点の値のプロットを作成する
no_2["2019-05-20":"2019-05-21"].plot()

## 時系列データをリサンプリングする
monthly_max = no_2.resample("M").max()
monthly_max

まとめ

この実験では、pandas ライブラリを使って Python で時系列データを扱う方法を学びました。大気質データを読み込み、日付文字列を日付時刻オブジェクトに変換し、週の各日の平均 NO2 濃度を計算し、1 日の各時間の平均 NO2 値をプロットし、時系列データを異なる頻度にリサンプリングしました。