[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を除外して保存できる。

参考

08. Pythonのリスト内包表記 - Kura IT Lab
プログラミング言語、通信、仮想マシン、OS、WebサイトなどITに関するまとめサイトです。 定期的にWikiのようにコンテンツを書き込んでいく予定です。 更新情報はTwitterアカウントの「@kura_lab」でつぶやきます。
Python pandas 図でみる データ連結 / 結合処理 - StatsFragments
なんかぼやぼやしているうちにひさびさの pandas エントリになってしまった。基本的な使い方については網羅したい気持ちはあるので、、、。 今回は データの連結 / 結合まわり。この部分 公式ドキュメント がちょっとわかりにくいので改訂したいなと思っていて、自分の整理もかねて書きたい。 公式の方はもう少し細かい使い方も...
Pandas のデータフレームを CSV ファイルやテキストファイルに出力する – Python でデータサイエンス
pandasでExcelファイル(xlsx, xls)の書き込み(to_excel) | note.nkmk.me
pandas.DataFrameをExcelファイル(拡張子: .xlsx, .xls)として書き出すにはto_excel()メソッドを使う。pandas.DataFrame.to_excel — pandas 0.22.0 documentation ここでは以下の内容について説明する。xlwt, openpyxlの...

コメント