高頻度の株価データ
高頻度の株価データは MA(1) 過程でうまくモデル化できることが多く、この章のモデルの良い応用例になります。
DataFrame intraday には、Sprint 株(ティッカーシンボル「S」)の1日分の価格(2017年9月1日、1分間隔)が入っています。株式市場は午前9時30分から午後4時までの6.5時間(390分)開いています。
時系列データを分析する前に、少しクレンジングが必要です。これはこの演習と次の2つの演習で行います。先頭の数行を見ると、いくつか気づく点があります。まず、列ヘッダーがありません。タイムスタンプは9:30〜16:00の時刻ではなく、0〜390の連番です。そして、最初の日付が「a1504272600」という少し奇妙な文字列になっています。「a」の後の数字は Unix time(1970年1月1日からの経過秒)で、このデータセットでは日中データの日を区切るために使われています。
データ型を見ると、DATE 列が object、つまりここでは文字列になっています。欠損データを整える前に、これを数値に変換する必要があります。
1分足データの出典は Google Finance です(データの取得方法はこちらを参照)。
datetime モジュールはすでにインポート済みです。
この演習はコースの一部です
Pythonで学ぶ時系列解析
演習の手順
.iloc[0,0]を使って、最初の日付を手動で 0 に変更してください。intraday.columnsに2つの文字列を含むリストを代入して、列ヘッダーを'DATE'と'CLOSE'に変更してください。- pandas の属性
.dtypes(かっこは不要)を使って、各列のデータ型を確認してください。 - pandas の関数
to_numeric()を使って、'DATE'列を数値に変換してください。 - pandas のメソッド
.set_index()を使い、引数に文字列'DATE'(列そのものではなく、列の「名前」)を渡して、'DATE'列をintradayの新しいインデックスにしてください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# import datetime module
import datetime
# Change the first date to zero
intraday.___ = 0
# Change the column headers to 'DATE' and 'CLOSE'
intraday.columns = ___
# Examine the data types for each column
print(intraday.dtypes)
# Convert DATE column to numeric
intraday['DATE'] = pd.to_numeric(____)
# Make the `DATE` column the new index
intraday = ____