【Python】時系列分析で使えるデータセットまとめ(単変量・多変量)

Posted: , Category: データセット , 時系列分析

時系列分析、やっていますでしょうか?時系列分析のテーマは幅広く、時系列予測や異常検知、因果推論など興味深いテーマが多数ありますよね。

今回は、時系列分析で利用できるデータセットを紹介します。特定のアルゴリズムを試すのに、手早くデータセットを準備したい際などにご利用ください。時系列のデータセットは、単変量、多変量、そして異常検知のアルゴリズムを試すことができるように、正解と異常のラベルがあるデータセットも紹介します。

このページは現役でデータサイエンティストをしている自分が、データセットを見つけ次第適宜更新していくので、ぜひお気に入りに登録して、ご活用ください。

本記事の内容
  • 単変量の時系列データセット
  • 多変量の時系列データセット

(準備)ライブラリのインポート

この記事では、データを扱うライブラリとしてpandasと可視化用のライブラリとしてmatplotlibを用います。まず、データを準備する前に、これらのライブラリをインポートしておきます。

import pandas as pd
import matplotlib.pyplot as plt

単変量の時系列データセット

それではまず、単変量の時系列データセットを紹介します。

AirPassengers: 飛行機乗客数

超有名なデータセットである、AirPassengersです。こちらのデータセットは、1949〜1960 年における、毎月の国際線の航空旅客数のデータです。季節成分があり、かつ右肩上がりのトレンドがあるのが特徴です。

データセットの準備

AirPassengersのデータは、pythonライブラリに同梱されていないので、データを配布しているサイトからダウンロードして利用します。データは下記のコードを実行することでダウンロードできます。

df = pd.read_csv("https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv", index_col='Month', parse_dates=True)
plt.figure(figsize=(10, 3), dpi=100)
plt.plot(df)

Nile: ナイル川の年間流量

Nileは、ナイル川の年間流量の時系列データです。データの取得間隔は1年で、1871年から1970年までのデータを得ています。データの特徴としては、一見するとトレンド成分はなく、季節成分もあるかどうかといったところです。データが定常的で、ランダムウォークしているようなデータにも見て取れます。

データセットの準備

こちらも、外部URLから取得することで簡単にデータセットを準備することができます。

df = pd.read_csv("https://raw.githubusercontent.com/statsmodels/statsmodels/main/statsmodels/datasets/nile/nile.csv", index_col="year")
plt.figure(figsize=(10, 3), dpi=100)
plt.title("Nile River")
plt.plot(df)

多変量の時系列データセット

ここでは、多変量の時系列データセットを紹介します。多変量のデータセットとして、有名な例としては、株価データや、機器のセンサー類のデータがあります。

Telemanom: NASA人工衛星のデータセット

Telemanomは、NASAが過去に運用していた2つの探査機・人工衛星「SMAP」と「MSL」のデータセットです。具体的なデータは、人工衛星の各機器類のセンサーデータとなっており、センサーの正常データと異常データのラベル付きのデータセットになっています。

近年ディープラーニングで時系列多変量データの異常検知が流行っていますが、機械学習・深層学習の最新の論文や学会発表でも非常に用いられるデータセットです。

Telemanomのデータセットの準備方法は、下記リンクで詳しく説明しているので、そちらを参考にしてください。

人工衛星テレメトリのデータセットtelemanomを利用する
NASA JPLのHundman et al 氏が 2018年に発表した自身の論文 「Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynami […]

東京の日々の気象データ

気象庁がホームページ上にて公開している、日本の天気データも簡単に利用することができます。気象庁のホームページから、日本全国の都市と、降水量や積雪量、風量、平均気温、最大気温、最低気温、蒸気圧、湿度など様々な情報を取得することができます。

基本的に上記のページから簡単に入手することができますが、とりあえず手元ですぐに確認したい、という人は次のコードを利用してみてください。

気象庁から取得できるデータのうち、2018/05/17 ~ 2023/5/17までの、「平均雲量、平均風速、平均気温、最大気温、最低気温、平均降水量」の6つの項目を日ごとで計測したデータです。

データセットの準備

df = pd.read_csv("https://raw.githubusercontent.com/aweglteo/tokyo_weather_data/main/data.csv", parse_dates=True, index_col=0)

このようなデータが取得できると思います。各系列名は、それぞれ上記の「平均雲量、平均風速、平均気温、最大気温、最低気温、平均降水量」の6つの項目に対応しています。

簡単に可視化してみると、このようになります。

fig = plt.figure(figsize=(16,11))
ax1 = fig.add_subplot(311)
ax2 = fig.add_subplot(312)
ax3 = fig.add_subplot(313)
ax1.plot(df["ave_tmp"])
ax1.set_title("average temperature")
ax2.plot(df["wind"])
ax2.set_title("average wind")
ax3.plot(df["cloud"])
ax3.set_title("average cloud")
plt.show()

今回は期間をざっと5年分用意しましたが、さらに長期間のデータを利用したい場合は、先ほど紹介した気象庁のページより取得することができます。

【広告】
統計学的にあなたの悩みを解決します。
仕事やプライベートでお悩みの方は、ベテラン占い師 蓮若菜にご相談ください。

機械学習と情報技術