[pandas] 複数のエクセルファイルをひとつにまとめる

Pandas

はじめに

複数のエクセルファイルをひとつのファイルにまとめる方法について説明する。具体的には、globでファイルを選択して、pandasのconcatでひとつにまとめる。
データはchromeの恐竜ゲームの結果で、以下のような形式のエクセルファイルを用いる。恐竜ゲームについては、オフラインでもchrome://dinoにアクセスすれば遊べる。

DateScoreDead
02018-09-092089bird_m
12018-09-105294bird_h
22018-09-116588sabo_4
32018-09-128901sabo_2
42018-09-137159bird_m

コード

コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)

解説

globでファイル名のリストを取得

glob.glob(filepath)のfilepathにワイルドカード(*)を含んだ”data/*.xlsx”をいれることで、dataフォルダ内の任意の文字列.xlsxというファイルをすべて取得する。つまりxlsxファイルをすべて取得できる。

ファイル名のソート

.sort()で得られたリストを昇順にソートする。

リスト内包表記のfor文で

pandasのread_excelをdatafile_listの数(len(datafile_list)=4)だけ繰り返す。これによりDataFrameを要素としてもつリストが生成する。

pandasのconcatで結合

pandasのconcatで各データをつなげる。
リストの最初が一番上にきて、最後が一番下に来る。
ignore_indexをTrueにすることで、インデックスを保持しなくなるので連番となる。

出来上がるデータは以下のようになる。

タブ区切りテキスト形式で保存

dataframe名.to_csvで保存できる。”all_data.tsv”がファイル名となる。
sepがデータの区切り方で’\t’でタブ区切りとなる。sepを指定しない場合はカンマ区切りとなる。
indexが不要な場合、index=”False”とすることでindexを除外して保存できる。
日本語を含む場合、encoding=”shift_jis”を追記すれば、日本語もちゃんと保存してくれる。[3]

エクセル形式で保存

dataframe名.to_excelでエクセル形式で保存できる。”all_data.xlsx”がファイル名となる。
indexが不要な場合、index=”False”とすることでindexを除外して保存できる。

参考

Moved Temporarily
Python pandas 図でみる データ連結 / 結合処理 - StatsFragments
なんかぼやぼやしているうちにひさびさの pandas エントリになってしまった。基本的な使い方については網羅したい気持ちはあるので、、、。 今回は データの連結 / 結合まわり。この部分 公式ドキュメント がちょっとわかりにくいので改訂した...
Pandas のデータフレームを CSV ファイルやテキストファイルに出力する
このページでは、Pandas を用いて作成したデータフレームや Pandas を用いて加工したデータを CSV ファイルやテキストファイルとして書き出す方法 (エクスポートする方法) についてご紹介します。 CSV ファ …
pandasでExcelファイル(xlsx, xls)の書き込み(to_excel) | note.nkmk.me
pandas.DataFrameをExcelファイル(拡張子: .xlsx, .xls)として書き出す(保存する)にはto_excel()メソッドを使う。 pandas.DataFrame.to_excel — pandas 1.2.2 d...

コメント