#0. はじめに
pandasをつかって、複数のcsvファイルに入っている縦持ちデータを連続で読み込み、横持ちデータへ変換する方法についてまとめる。
Step0. ライブラリの読み込み・データフレーム作成
Step1. データ読み込み
・ os.walkでメインディレクトリ内のcsvファイルを取得
・ pandas.read_csvで取得したcsvファイルを読み込む
Step2. データ積み上げ
・ pandas.concatで読み込んだcsvファイルを積み上げる
(Step1を行いながらStep2の処理を実施)
Step3. 横持ち変換
・ pandas.pivot_tableで縦持ちになってるデータフレームを横持ちへ変換
ディレクトリ
Main_dir/
├ file1.csv
├ file2.csv
└ file3.csv
#Step0 ライブラリの読み込み・データフレーム作成
import pandas as pd
import os
df = pd.DataFrame()
#Step1と2 データ読み込み・データ積み上げ
for foldername, subfolders, filenames in os.walk('/Main_dir'):
pass
for subfolder in subfolders:
pass
for filename in filenames:
if filename.endswith('.csv'):
read_df = pd.read_csv(filename)
if df.empty:
df = read_df
else:
df = pd.concat([df, read_df])
# | ## | Data |
---|---|---|
A | i | 1 |
A | ii | 2 |
A | iii | 3 |
B | i | 4 |
B | ii | 5 |
B | iii | 6 |
C | i | 7 |
C | ii | 8 |
C | iii | 9 |
#Step3.横持ち変換
pivoted_df = pd.pivot_table(df, values ='Data', index = ['##'], columns=['#'])
## | A | B | C |
---|---|---|---|
i | 1 | 4 | 7 |
ii | 2 | 5 | 8 |
iii | 3 | 6 | 9 |
参考文献
Wes McKinney 著 瀬戸山雅人、小林儀匡、滝口開資 訳 (2018) Pythonによるデータ分析入門 第2版、オライリー・ジャパン、オーム社