Pythonを使って、投資信託の日次CSVをフォーマットしていきます。
今回は、三菱UFJアセットマネジメントの投資信託を対象としています。
対象商品
分配金が出ている 日経平均高配当利回り株ファンド を選びました。
eMAXIS Slim オルカン、eMAXIS Slim S&P500 などのCSVは同じ形式でした。
※ 全ての商品のCSVは確認できていません。
加工前のCSV
CSVのエンコーディングは Shift_JIS か Windows-31J(CP932)です。
日経平均高配当利回り株ファンド 基準日,基準価額(円),基準価額(分配金再投資)(円),分配金(税引前)(円),純資産総額(億円) 2018/11/09,9974,9974,,1.99 2018/11/12,10019,10019,,2.00 ・・省略・・ 2019/06/14,9250,9250,,3.90 2019/06/17,9048,9208,160,3.99 2019/06/18,8982,9140,,4.02
1行目がファンド名なので読み飛ばします。
2019/06/17 が決算日で分配金ありです。決算日以外は分配金が空なので、0埋めをしていきます。
加工後のCSV
Date,Close,Dividends 2018-11-09,9974.0,0.0 2018-11-12,10019.0,0.0 ・・省略・・ 2019-06-14,9250.0,0.0 2019-06-17,9048.0,160.0 2019-06-18,8982.0,0.0
加工前後の列のマッピングは以下の通りです。
| 前 | 後 |
|---|---|
| 基準日 | Date |
| 基準価額(円) | Close |
| 分配金(税引前)(円) | Dividends |
コード例
import pandas as pd def main(): # 運用会社の投信コード code = "253439" # CSVの読込・列名変更 df = pd.read_csv( f"{code}.csv", encoding="cp932", skiprows=1, usecols=["基準日", "基準価額(円)", "分配金(税引前)(円)"] ) df.columns = ["Date", "Close", "Dividends"] # 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"].fillna(0).astype(float) # CSVに出力 df.to_csv( f"{code}-cleaned.csv", encoding="utf-8", date_format="%Y-%m-%d" ) if __name__ == "__main__": main()
以下の処理は、独自のアプリ向け要素が強いです。
- 日付をDatetimeIndexに変換
- 念のため昇順にソート
- 基準価額の型変換
- 分配金の0埋めと型変換
あとは、欠損値のチェックなどをしても良いのかもしれません。
CSVのダウンロード方法
ブラウザで ファンドのページ を開きます。

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