概要
RDBMSは、基本的には正規化されてデータが格納されている。
例えば
トランザクションに
日付,商品コード,販売数量
マスタに
商品コード,商品名,商品分類
etc
などだ。
RDBMSに格納されており、かつ、それにアクセスできる環境があるなら
SQLのSELECT文で一発で結合して内容を確認できる。
しかしながら、各テーブルのCSVのみが手元にあり
それを何らかの事情で中身のチェックなり確認をする必要に迫られた
シチュエーションは無いだろうか?
あまりないかなw
てな訳で、正規化されたCSV(つまりRDBMSのテーブルを、テーブルごとにそのままCSV出力)が手元にあるとして
それを結合して見やすいExcelを生成するサンプルを紹介する。
利用環境
>
Python 3.10.5
Visual Studio Code 1.68.1
>
テストデータ準備
テストデータは、上場企業一覧のCSVを
カブサポさんより配布されているものを入手し、利用する。
https://kabusapo.com/stock-data/stock-list/
これを、あえて正規化(というほどでも無いが)
銘柄コード,単元株数
銘柄コード,銘柄名
という2つのCSVに分割する。
#csv_joinデータ準備
import pandas as pd
def main():
#本体処理
stoc_value_table = pd.read_csv(".\\CSV\\stocklist.csv",encoding="utf-8", dtype=str )
#CSV、分割出力
stoc_value_table.to_csv(".\\CSV\\tangen.csv",encoding="utf-8",columns=['銘柄コード', '単元株数'],header=True, index=False)
stoc_value_table.to_csv(".\\CSV\\name_master.csv",encoding="utf-8",columns=['銘柄コード', '銘柄名'],header=True, index=False)
if __name__ == '__main__': main()
ソースコード
以下のように、ジョインして最終的には確認用のExcelを出力している
#正規化されたcsvをjoinして確認しやすく加工
import pandas as pd
def main():
#本体処理
#csvデータをオープン(マスタとトランザクション)
brand_master = pd.read_csv(".\\CSV\\name_master.csv",encoding="utf-8", dtype=str)
tangen_tran = pd.read_csv(".\\CSV\\tangen.csv",encoding="utf-8", dtype=str)
#銘柄コードで、レフトジョインする。
join_brand = pd.merge(tangen_tran, brand_master, how="left", on="銘柄コード")
#2さらに別テーブルを、つのキーでジョインするサンプル
#vew_brand = pd.merge(join_brand, cat_master, how="left", left_on=['A','B'], right_on=['C','D'])
#Excel出力
join_brand.to_excel(".\\CSV\\vew_brand.xlsx",columns=['銘柄コード', '銘柄名', '単元株数'])
if __name__ == '__main__': main()