複数のテキストファイルをpandasでひとつにまとめる

Pandas

複数のテキストファイルをひとつのファイルにまとめる方法

globでファイルを選択して、pandasでひとつにする。
データはchromeの恐竜ゲーム。chrome://dinoで遊べます。

コード

globモジュール

data_list  = glob.glob('data/*.tsv')
data_list.sort()

glob.glob(filepath)のfilepathにワイルドカード(*)を含んだ”data/*.tsv”をいれることで、dataフォルダ内の任意の文字列.tsvというファイルをすべて取得する。
.sort()で得られたリストを昇順にソートする。
その結果が↓。

['data/Dino_2018_0909_0915.tsv',
'data/Dino_2018_0916_0922.tsv',
'data/Dino_2018_0923_0929.tsv',
'data/Dino_2018_0930_1006.tsv']

リスト内包表記のfor文

data_files = [pd.read_table(data_list[i],parse_dates=[0]) for i in range(len(data_list))]

pandasのread_tableをdata_listの数(len(data_list)=4)だけ繰り返す。[1]

pandasのconcat

all_data = pd.concat(data_files,ignore_index=True)

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

     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
5 2018-09-14 9498 bird_m
6 2018-09-15 17118 sabo_4
7 2018-09-16 5936 bird_m
8 2018-09-17 9314 sabo_4
9 2018-09-18 5468 bird_m
10 2018-09-19 11479 sabo_4
11 2018-09-20 9017 sabo_3
12 2018-09-21 4706 sabo_3
13 2018-09-22 7820 sabo_4
14 2018-09-23 6418 sabo_1
15 2018-09-24 16065 sabo_4
16 2018-09-25 5201 sabo_1
17 2018-09-26 8995 bird_m
18 2018-09-27 22515 sabo_2
19 2018-09-28 8436 bird_h
20 2018-09-29 13638 sabo_1
21 2018-09-30 12621 bird_h
22 2018-10-01 5256 sabo_4
23 2018-10-02 19878 sabo_1
24 2018-10-03 4873 sabo_1
25 2018-10-04 8092 sabo_2
26 2018-10-05 2093 sabo_2
27 2018-10-06 7931 sabo_1

保存

all_data.to_csv("all_data.tsv",sep='\t', index=False)

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

参考

  1. 08. Pythonのリスト内包表記 – Kura IT Lab – Google Sites
  2. Python pandas 図でみる データ連結 / 結合処理 – StatsFragments
  3. Pandas のデータフレームを CSV ファイルやテキストファイルに出力する – pythonデータサイエンス

version
python 3.6.5
pandas 0.23.4

にほんブログ村 IT技術ブログへ
にほんブログ村 IT技術ブログ Pythonへ
Pandaspython
この記事をシェアする
sabopy.comをフォローする
サボテンパイソン

コメント