[Python] 272 辞書型データをCSVファイルに変換他

辞書型データからのvalue取得、キーの任意並べ替え(valueがない場合にも対応)、データフレームとの相互変換、CSVファイルへの変換が含まれたコードです。

import pandas as pd

<中略>

df = pd.read_csv(path,header=None,encoding='shift_jis')
df2 = df.drop_duplicates(subset=[0])

# データフレームを辞書型データに変換
dict = {str(x) : str(y) for x,y in zip(df2[0],df2[1])}

# 15項目の辞書型データを作成(valueがない場合はnanを入力)
dict2 = {'馬名':dict.get('馬名','nan'),'稼働':dict.get('稼働','nan'), '性別':dict.get('性別','nan'), '毛色':dict.get('毛色','nan'), '生年月日':dict.get('生年月日','nan'), '調教師':dict.get('調教師','nan'), '馬主':dict.get('馬主','nan'),'募集情報':dict.get('募集情報','nan'),'生産者':dict.get('生産者','nan'), '産地':dict.get('産地','nan'), 'セリ取引価格':dict.get('セリ取引価格','nan'), '獲得賞金':dict.get('獲得賞金','nan'), '通算成績':dict.get('通算成績','nan'), '主な勝鞍': dict.get('主な勝鞍','nan'), '近親馬':dict.get('近親馬','nan')}

# 辞書型データをデータフレームに変換
df3 = pd.json_normalize(dict2)

# df3の行と列を転置してCSVファイルを作成(T属性を使う)
with open(path,mode="w",encoding="cp932", errors="ignore") as f:
    df3.T.to_csv(f,header=False)

[Python] 270 CSVファイルの重複行削除

メモ書きしておきます。

for path in paths:
    df = pd.read_csv(path,header=None,encoding='shift_jis')

    # 列0の値が重複する場合に最初の行だけ残す
    df2 = df.drop_duplicates(subset=[0])

    with open(path,mode="w",encoding="cp932", errors="ignore") as f:
        df2.to_csv(f,index=False,header=False)

[Python] 269 欠番リスト作成(差集合)

リスト同士を比較して差分を演算するコードの一例です。

千番単位で連番リストを作り、比較したいリストとの差集合を演算します。

# 連番リスト作成
list_num = [[str(x).zfill(5) for x in range(1000*thou +1,1000*thou +1001)] for thou in range(0,11) ]

# 比較リスト作成
list_compare_pre = glob.glob('/*.csv')
list_compare = [path.split('.')[0][-5:] for path in list_compare_pre]

# 欠番リスト作成    
list_lack = list(set(list_num[0]) - set(list_compare))
list_lack.sort()