スポンサーリンク

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

スポンサーリンク