はじめに
複数のエクセルファイルをひとつのファイルにまとめる方法について説明する。具体的には、globでファイルを選択して、pandasのconcatでひとつにまとめる。
データはchromeの恐竜ゲームの結果で、以下のような形式のエクセルファイルを用いる。恐竜ゲームについては、オフラインでもchrome://dinoにアクセスすれば遊べる。
Date | Score | Dead | |
---|---|---|---|
0 | 2018-09-09 | 2089 | bird_m |
1 | 2018-09-10 | 5294 | bird_h |
2 | 2018-09-11 | 6588 | sabo_4 |
3 | 2018-09-12 | 8901 | sabo_2 |
4 | 2018-09-13 | 7159 | bird_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を除外して保存できる。
コメント