C#, Python, Web開発

プログラミングやデータ分析のことなどを書いています。

Python ニッセイAMの投資信託CSVを整形

Pythonを使って、投資信託の日次CSVをフォーマットしていきます。

今回は、ニッセイアセットマネジメントの投資信託を対象としています。

対象商品

分配金が出ている ニッセイ世界高配当株ファンド(毎月決算型) を選びました。

ニッセイNASDAQ100、ニッセイSOX指数などのCSVは同じ形式でした。

※ 全ての商品のCSVは確認できていません。

加工前のCSV

CSVのエンコーディングは Shift_JIS か Windows-31J(CP932)です。

日付,ファンド名,基準価額,税引前分配金再投資基準価額,純資産総額,前日比
2026年03月12日,ニッセイ世界高配当株ファンド(毎月決算型),14389,31198.54872028,\5596599992,+132
2026年03月11日,ニッセイ世界高配当株ファンド(毎月決算型),14257,30912.34339461,\5544341874,+185
・・省略・・
2013年09月24日,ニッセイ世界高配当株ファンド(毎月決算型),10466,10515.81911653,\34293855613,-38
2013年09月20日,ニッセイ世界高配当株ファンド(毎月決算型),10504,10554,\34374186763,+135
・・省略・・
2013年07月24日,ニッセイ世界高配当株ファンド(毎月決算型),10000,10000,\30678399130,0
2013年07月23日,ニッセイ世界高配当株ファンド(毎月決算型),10000,10000,\30679352150,-

データが日付の降順なので、昇順にソートします。

2013年09月20日が決算日で分配金ありです。CSVに分配金の列はないですが、トータルリターンを求めるために「税引前分配金再投資基準価額」を使うことにします。

加工後のCSV

Date,Close,Dividends
2013-07-23,10000.0,0.0
2013-07-24,10000.0,0.0
・・省略・・
2013-09-20,10554.0,0.0
2013-09-24,10515.81911653,0.0
・・省略・・
2026-03-11,30912.34339461,0.0
2026-03-12,31198.54872028,0.0

加工前後の列のマッピングは以下の通りです。

日付 Date
税引前分配金再投資基準価額 Close

Dividendsは、0.0で埋めています。

コード例

import pandas as pd

def main():
  # CSVのファイル名
  csv_name = "121320"
  # CSVの読込・列名変更
  df = pd.read_csv(
    f"{csv_name}.csv", encoding="cp932",
    usecols=["日付", "税引前分配金再投資基準価額"]
  )
  df.columns = ["Date", "Close"]
  # DatetimeIndexに変換・昇順にソート
  df["Date"] = pd.to_datetime(
    df["Date"], format="%Y年%m月%d日"
  )
  df = df.set_index("Date")
  df = df.sort_index()
  # 型変換・分配金の列を追加
  df["Close"] = df["Close"].astype(float)
  df["Dividends"] = 0.0
  # CSVに出力
  df.to_csv(
    f"{csv_name}-cleaned.csv",
    encoding="utf-8", date_format="%Y-%m-%d"
  )

if __name__ == "__main__":
  main()

型変換などの細かいところは、用途次第では不要になると思います。

CSVのダウンロード方法

ブラウザで ファンドのページ を開きます。

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