帳票データをpandas.read_csvで読み込む時のUnnamed回避方法

Python

pandasのread_csvで帳票データを読み込むときに、ヘッダーが複数行あるせいでUnnamedという文字列が入ってしまい困ったことはありませんか?

今回は、read_csvで読み込んでもUnnamedが入らないようにする方法をご紹介します。

【世界で5万人が受講】実践 Python データサイエンス・オンライン講座

使用データ

  • 例えば、下記のようなデータを想定しています。
データサンプル

問題:カラム名に複数空欄がある場合Unnamedが勝手に入る

  • 下記のように普通に読み込むと、勝手にUnnamedが入力されてしまいます。
concat_df = pd.read_csv(r'**.csv',
                        header=[0,1,2,3],
                        keep_default_na=False,
                        index_col=[0],
                        parse_dates=[0],
                        encoding='shift-jis',
                        engine='python'
                       )
データサンプル(Unnamedあり)

解決方法:MultiIndexとしてカラム名を登録する

  • read_csvでは、ヘッダを読み込まない
  • MultiIndexとして、あとでカラム名を張り付ける
raw_df = pd.read_csv(r'**.csv',
                     keep_default_na=False, # 空欄をNaで置き換えない
                     header=None, # headerは指定しない
                     index_col=[0],
                     encoding='shift-jis',
                     engine='python'
                     )

# MultiIndex.from_frameを使用する。
# raw_dfの4行目までをカラムとしてMultiIndexを作り、raw_dfのカラムとして入力する
raw_df.columns = pd.MultiIndex.from_frame(raw_df.iloc[:4, :].T)

# カラム名とデータフレームの4行目までは重複するので削除する。
raw_df = raw_df.iloc[4:, :]

こんな感じでコードを書くと、下記のようにUnnamedを含まずにカラム名を設定することができます。

Amazon.co.jp : データ分析 python

コメント

タイトルとURLをコピーしました