pandasのデータ集計メモ


はじめに

最近Kaggleを始めたのですが,pandasで出来ることの便利さと多さ,それに付随してたまにメソッドを忘れてしまう問題が発生したのでメモ次いでにirisデータでデータをいじりまとめてみることにした。

読み込み

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
iris = load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)

行,列指定

pandasのdataframeではスライスがしようできないのでilocメソッドなとを使用する

iris.iloc[1,2]#1行目の2列目
iris.iloc[:,2]#2列目

ある列の値からフラグ付け

irisのsepal lengthが5.0cm以上の時にフラグを付けたい場合はapplyとlambdaを利用する

iris["sepal_len_flag"] = iris["sepal length (cm)"].apply(lambda x:1 if 5 < x  else 0)

groupごとに集計をする

groupbyによってグループごとの統計量を取得できる]

iris.groupby("sepal_len_flag")["sepal width (cm)"].mean()#sepallenflagごとのsepalwidthの平均を取得する

グループごと,カラムごとに別々の統計処理を行う

groupbyの後ろにaggとつけ引数に辞書形式で指定することで,カラムごとに個別の処理を書けることができる

iris.groupby("sepal_len_flag").agg({"sepal length (cm)":"mean","sepal width (cm)":["max","min"]})

ある行の最大値のインデックスをとる

idxmaxメソッドによって最大値のインデックスが返される

iris["sepal length (cm)"].idxmax()"sepal lengthの最大値のインデックスを返す