時系列データの日付処理【メモ】


何があったか

時系列データの取り扱いを学ぶためにまずは、チュートリアルでよく用いられているAirPassengersのデータを読み込むことにしました。

#モジュール
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#時系列データ関係
from scipy import signal
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.seasonal import STL
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

#データの読み込み
df1 = pd.read_csv('AirPassengers.csv', index_col='Month', parse_dates=True)

df1.head(2)

ちゃんと日付をインデックスにできているか確認したら。。。ん?
本来は1949-01-01スタートなのに、なぜか2049年始まりになっていて。
コードのエラーは出ていないけど、ちょっと気持ち悪いので直せないか調査しました。

調査したら

こんな記事を発見。

簡単にまとめるとExcelのバグらしい。記事はxlsxファイルだが今回のcsvでも同じことが起きていそう。

解消方法

csvファイルをExcelで開き、日付部分の数値の書式を標準⇒日付に変えただけ。以上。
根本的な理由は不明ですが、正しい日付で開けるようになりました。
もしかしたらバージョンにもよるかもしれません(自分が使ったExcelは2016年版)。

修正しなくても普通に読み込めるようになると個人的には嬉しいです。

参考