Pythonを使って、投資信託の日次CSVをフォーマットしていきます。
今回は、大和アセットマネジメントの投資信託を対象としています。
対象商品
分配金が出ている ダイワ日本好配当株ファンド を選びました。
iFreeNEXT FANG+、USテック20 などのCSVは同じ形式でした。
※ 全ての商品のCSVは確認できていません。
加工前のCSV
CSVのエンコーディングは Shift_JIS か Windows-31J(CP932)です。
基準日,基準価額,前日比,純資産総額,直近決算日,直近分配金,分配金再投資基準価額 20050720,10017.00,0,52203998207,00000000,0,10017 20050721,9989.00,-28,52493596112,00000000,0,9989 ・・省略・・ 20051014,11335.00,-94,71325478690,00000000,0,11335 20051017,10097.00,-1238,64071339803,20051017,1200,11297 20051018,10116.00,19,69214253737,20051017,1200,11318 ・・省略・・ 20060113,11869.00,-23,184467382298,20051017,1200,13280 20060116,10038.00,-1831,156380970730,20060116,1800,13245 20060117,9846.00,-192,166344200231,20060116,1800,12992
20051017 が決算日で分配金ありです。
決算日までは、直近決算日が「00000000」で、直近分配金は「0」です。
直近決算日と直近分配金は、値が変わるまでは直近のデータを引き継ぐようです。20051018 の直近決算日と直近分配金は、20051017 のデータと同じです。
加工後のCSV
Date,Close,Dividends 2005-07-20,10017.0,0.0 2005-07-21,9989.0,0.0 ・・省略・・ 2005-10-14,11335.0,0.0 2005-10-17,10097.0,1200.0 2005-10-18,10116.0,0.0 ・・省略・・ 2006-01-13,11869.0,0.0 2006-01-16,10038.0,1800.0 2006-01-17,9846.0,0.0
加工前後の列のマッピングは以下の通りです。
| 前 | 後 |
|---|---|
| 基準日 | Date |
| 基準価額 | Close |
| 直近分配金 | Dividends |
分配金は出た日だけ残して、他は0にしています。基準日と直近決算日が等しい場合だけ、その日の分配金を有効にします。
コード例
import pandas as pd import numpy as np def main(): # CSVのファイル名 csv_name = "code_4709" # CSVの読込(文字列比較のために型を指定) df = pd.read_csv( f"{csv_name}.csv", encoding="cp932", dtype=str, usecols=["基準日", "基準価額", "直近決算日", "直近分配金"] ) # 列名変更 df.columns = ["Date", "Close", "DivDate", "Dividends"] # 分配金は出た日だけ残す(他は0埋め) df["Dividends"] = np.where( df["Date"] == df["DivDate"], df["Dividends"], 0 ) # 不要になった列を削除 df = df.drop(columns=["DivDate"]) # DatetimeIndexに変換・念のため昇順にソート df["Date"] = pd.to_datetime( df["Date"], format="%Y%m%d" ) df = df.set_index("Date") df = df.sort_index() # 型変換・0埋め df["Close"] = df["Close"].astype(float) df["Dividends"] = df["Dividends"].astype(float) # CSVに出力 df.to_csv( f"{csv_name}-cleaned.csv", encoding="utf-8", date_format="%Y-%m-%d" ) if __name__ == "__main__": main()
型変換などの細かいところは、用途次第では不要になると思います。
CSVのダウンロード方法
ブラウザで ファンドのページ を開きます。

下のほうにある「時系列データをダウンロード」をクリックするとダウンロードできます。
