Pandasで条件に合致した行の総和・平均・最大・最小
まずは、下記のようにデータフレームを作成します。
'col1'と'col2'の列名をつけています。
import pandas as pd
data = pd.read_csv('in.txt', names=('col1', 'col2'))
col2の列の値が4以上のデータフレームを抽出しています。
print(data[data.col2 >= 4])
その上で、col2の列の総和
print(data[data.col2 >= 4].col2.sum())
col2の列の平均
print(data[data.col2 >= 4].col2.mean())
col2の列の最大値
print(data[data.col2 >= 4].col2.max())
col2の列の最小値
print(data[data.col2 >= 4].col2.min())
サンプルコード
例えば、下記のin.txtがあったとします。
$ cat in.txt line1,1 line2,9 line3,3 line4,7 line4,8
下記がサンプルコードになります。
$ cat sample.py
#!/usr/bin/env python3
# coding: UTF-8
import pandas as pd
data = pd.read_csv('in.txt', names=('col1', 'col2'))
print(data)
print("col2 >= 4のデータフレーム")
print(data[data.col2 >= 4])
print("col2 >= 4のcol2の列の総和")
print(data[data.col2 >= 4].col2.sum())
print("col2 >= 4のcol2の列の平均")
print(data[data.col2 >= 4].col2.mean())
print("col2 >= 4のcol2の列の最大")
print(data[data.col2 >= 4].col2.max())
print("col2 >= 4のcol2の列の最小")
print(data[data.col2 >= 4].col2.min())
下記が実行結果になります。
$ ./sample.py
col1 col2
0 line1 1
1 line2 9
2 line3 3
3 line4 7
4 line4 8
col2 >= 4のデータフレーム
col1 col2
1 line2 9
3 line4 7
4 line4 8
col2 >= 4のcol2の列の総和
24
col2 >= 4のcol2の列の平均
8.0
col2 >= 4のcol2の列の最大
9
col2 >= 4のcol2の列の最小
7
