モモノキ&ナノネと一緒にPythonで時系列分析を覚えよう(2)
データ処理に便利なPandasの使い方
時系列分析の続きを始めるね。今回はPandasのキホン的な操作を覚えよう。
ナノネ、前回までのコードを呼び出して実行してみて。
OK、実行したよ。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
plt.xkcd()
最初はPandasで時系列データを作成する練習をしよう。普通は事前に準備したCSVデータなどをPandasで読み込んで使うケースが多いけど、基礎練習なので一からデータを作ってみよう。
まず、日付を3つ作ってみよう。
datetimeモジュールは日付や時刻の値を利用するのに必要だから先にインポートしてね。日付はdatetimeモジュールのdateクラスで任意の日付が作れるよ。
作った日付をリスト型変数(my_date)に入れて、こんな感じでいい?
import datetime
my_date = [datetime.date(2018, 2, 15),
datetime.date(2018, 2, 16),
datetime.date(2018, 2, 17)]
print(my_date)
OK。datetimeモジュールは日付時刻を便利に扱える機能が他にも沢山あるので、必要になったときに公式ドキュメントなどを都度調べてみてね。
Python公式ドキュメント datetime(外部サイト)
https://docs.python.jp/3/library/datetime.html
3つの日付に対応する適当なデータを、リスト型で一つで作っておこう。値の型はflot型にしておいてね。あとで時系列分析用のライブラリを利用するとき、int型の値では使えないケースがあるからね。データをflot型にしておくことは重要だよ。
float型の適当な値で、データ用のリストを一つ作った。
my1_values = [10.0, 25.2, 30.3]
print(my1_values)
日付とデータを一つ準備できたので、Pandasに格納してみよう。データが1種類のときは、PandasのSeriesが利用できるよ。あと、Pandasのindexは日付(時刻)の値を指定してね。時系列データを扱うときに重要だよ。
Seriesの作成は、パラメーターにさっき作ったデータとindex=日付を指定して、こんな感じかな?
series1 = pd.Series(my1_values, index=my_date)
うん。作ったSeriesの中身を確認してみよう。
print(series1)
左側からインデックスの日付、次に設定したデータで型もfloat型。ちゃんと入っているね。
今後この学習で利用予定の飛行機乗客数時系列データは、データが1種類(乗客数)なのでSeariesが使えれば十分だけど、せっかくなので2種類以上のデータを作る方法も覚えておこう。
Seriesを二つ作るの??
Pandasでデータを作る方法はいろいろあるけど、データを2種類以上扱うときは、PandasのDataFrameを利用するよ。
ナノネ、追加でデータ用の適当なリストをもう一つ作ってみて。
OK。追加でもう一つデータ(my2_values)を作ったよ。
my2_values = [100.0, 200.0, 300.0]
print(my2_values)
データが2種類準備できたので、PandasのDataFrameに格納してみよう。今度はデータ列につける名前も指定してね。設定する方法は複数あるけど、今回はデータをキー(列名を入れいる)と値の辞書型で渡してみてね。
DataFrameを使って、データはキーに列の名前を指定。indexはSeriesのときと同じで日付を設定して。こんな感じかな?
my_df = pd.DataFrame({'Aモモノキ': my1_values,
'Bナノネ': my2_values},
index=my_date)
OK、作ったDataFrameの中身を確認してみよう。DataFrameを格納した変数名をタイプして実行すれば表にして確認できるよ。
my_df
列名を指定すれば、該当するデータだけ表示もできるよ。
my_df['Aモモノキ']
データが1種類だと表にしてくれないの?
指定方法にもよるけど、データが1種類のSeriesとして扱われると表は出ないよ。表にしたい場合は、列名をも配列で指定してね。データフレーム名[[列名]]みたいに。複数の列を指定するときも同様でデータフレーム名[[列名1, 列名2, ...]]だよ。
my_df[['Aモモノキ']]
my_df[['Aモモノキ', 'Bナノネ']] # 全2種類なのでmy_dfと同じ
データフレーム名.describe()と実行すれば、格納されたデータの統計量が確認できるよ。
my_df.describe()
データ列を追加したり、削除したいときはどうすればいいの?
列の追加・削除も複数の方法があるので一例だけ試してみてね。
・列追加はデータフレーム名['追加する列名'] = 値リストで設定できるよ。
・列削除はデータフレーム名['削除する列名'].drop(列名, axis=1)が使えるよ。
my_df['Cウメノキ'] = [0.1, 0.2, 0.3] # 列データを1個追加
my_df['Dカキノキ'] = [1.0, 1.0, 1.0] # 列データを1個追加
my_df
# 元データから削除したい場合は変数に再代入が必要。
my_df = my_df.drop('Cウメノキ', axis=1) # axis=1で列方向削除を指定する
my_df
列の追加と削除ができたよ。
単純な列削除なら、これでもOKだよ。
del my_df['Dカキノキ']
my_df
モモノキ、次の練習は?
続きは次回で、PandasでCSVファイルを使う練習をするよ。
時系列分析の学習まで、なかなか先に進まないけど大丈夫?
対話式でつくるのは、慣れないと結構時間がかかる。。。
気長に進めるけど、許してね。
ラジャー。
0 件のコメント :
コメントを投稿