【 今回やること! 】
こちらの記事で、FXのヒストリカルデータを入手しました。
入手したヒストリカルデータは、2005年1月10日 2時31分から現在までの1分足のデータなので、かなり膨大な行数(540万行超)です。ファイルサイズは約275MBあります。
大きすぎて扱いが大変なので、指定した期間のデータを抽出して別のCSVファイルにします。
それでは作業を開始します!
作業の前提
今回の作業は、下記の記事の続きです。
『Google ドライブ』の『hst_(日付、例:hst_20191029)』フォルダ内に、ヒストリカルデータのCSVファイルがある状態で作業を始めています。指定した期間のデータを抽出してCSVファイルに保存する
- 『Google Colaboratory』で『Python 3 の新しいノートブック(または前回のノートブック)』を開いて、『Google ドライブ』をマウントします。
- 『コードセル』に下記のコードを貼り付けて実行します。
%%time # ↑セルの処理時間を計算 %%timeはセルの最初に単独で書く import os # パス結合 import pandas as pd # pandasデータフレームを使用 # Googleドライブのマイドライブのパス mydrive = '/content/drive/My Drive' # フォルダ名 hst_dir = 'hst_20191029' # 入力ファイル名 input_csv = 'USDJPY.csv' # CSVファイルをPandasデータフレームに読み込む df = pd.read_csv(os.path.join(mydrive, hst_dir, input_csv)) # DateTime列をdatatime型に変換→インデックスに設定して、元の列は削除する df = df.set_index(pd.to_datetime(df['DateTime'])).drop('DateTime', axis=1) # 指定した期間のデータを抽出する(参考として指定方法を数パターン書いています) #df = df['2019-09-30 0:00' : '2019-09-30 6:00'] # 期間を日時で指定 #df = df['2019-08' : '2019-09'] # 期間を年月で指定 #df = df['2019-09-20' : '2019-09-30'] # 期間を日で指定 #df = df['2019'] # 年で指定 #df = df['2019-09'] # 年月で指定 df = df['2019-09-30'] # 年月日で指定 #df = df[:100] # 先頭からの行数で指定 #df = df[100:200] # 期間を行数で指定 # 抽出結果の表示 print('行数:%d' % len(df)) # 行数 display(df.head(1)) # データの先頭1行を表示 display(df.tail(1)) # データの末尾頭1行を表示 # 出力ファイル名 output_csv = 'USDJPY_20190930.csv' # CSVファイルに保存 df.to_csv(os.path.join(mydrive, hst_dir, output_csv))
実行すると、抽出したデータの行数、先頭と末尾の行の内容が表示されます。
抽出したデータは、元のCSVファイルと同じフォルダ内に指定したファイル名で保存されます。
元のデータもすべての日時にデータがあるわけではないので、指定した期間によっては該当するデータがない場合もあります。
今回は以上です。