pandasで実験結果をまとめる一連の流れ

作成日:2018-12-10
Python

pandasを利用した処理の備忘録。

pandas で処理したいデータのディレクトリに移動する

import os

os.chdir(r'処理したいcsvファイルのディレクトリのパス')

Windowsでパスの指定をするとき、パスの前に r をつけることを忘れないこと。 もしくは、バックスラッシュを2回書くこと。

データフレームの読み込み

import pandas as pd

df = pd.read_csv('読み込みたい.csv', encoding='csvファイルのエンコード')

書き込み用のリストを作成

out_list = []

追加したい行がある場合の行生成

df['列名'] = 0

読み込んだ csv ファイルには存在しない列がある場合これを行う

行計算

for index, row in df.iterrows():
	output = func(row['列名'])
	row['列名'] = '{:.3g}'.format(output)

	# 書き込み用のリストに追加する
	out_list.append(row)

2列1列目から index として0から数字が入ることになる。(処理後の csv ファイルにはという意味)

format 関数あれこれ

format の前にある {} 内のオプションを設定することで、桁数を指定できる。上の例では有効数字3桁の値に整形するという意味である。

その他のオプションは次のサイトが詳しい。
note.nkmk.me-Python, formatで書式変換(0埋め、指数表記、16進数など)
(https://note.nkmk.me/python-format-zero-hex/)

データの書き込み

df = pd.DateFrame(out_list)

# きちんと計算できているかどうかシェルで確認したいときはこのコードを書く
print(df.head(3))

# 別の csv ファイルに出力する
df.to_csv('出力するファイル名.csv')

コードを全部まとめた版

import os
import pandas as pd

os.chdir(r'処理したいcsvファイルのディレクトリのパス')

df = pd.read_csv('読み込みたい.csv', encoding='csvファイルのエンコード')
out_list = []
# 読み込みデータには存在しない列の追加
df['列名'] = 0

def func(input):
	output = input
	return output

for index, row in df.iterrows():
	output = func(row['列名'])
	row['列名'] = '{:.3g}'.format(output)

	# 書き込み用のリストに追加する
	out_list.append(row)

df = pd.DateFrame(out_list)
# きちんと計算できているかどうかシェル上で確認したいときはこのコードを書く。最初の3行目まで出力される
print(df.head(3))
# 別の csv ファイルに保存する
df.to_csv('出力するファイル名.csv')