import numpy as np
import pandas as pd
from pandas import DataFrame, Series
dframe = DataFrame({'k1':['X','X','Y','Y','Z'],
'k2':['alpha','beta','alpha','beta','alpha'],
'dataset1':np.random.randn(5),
'dataset2':np.random.randn(5)})
dframe
# k1をキーとして、データをグループにまとめます。
group1 = dframe['dataset1'].groupby(dframe['k1'])
group1
#グループごとの平均値を計算
group1.mean()
# キーは変えられます。
cities = np.array(['NY','LA','LA','NY','NY'])
month = np.array(['JAN','FEB','JAN','FEB','JAN'])
# それぞれでグループ化します。
dframe['dataset1'].groupby([cities,month]).mean()
dframe
dframe.groupby('k1').mean()
# 複数の列名にも対応しています。
dframe.groupby(['k1','k2']).mean()
# 列を限定することもできます。
dataset2_group = dframe.groupby(['k1','k2'])[['dataset2']]
dataset2_group.mean()
# size()と一緒に使うのも便利です。
dframe.groupby(['k1']).size()
# イテレート(繰り返し処理)ができます。
for name,group in dframe.groupby('k1'):
print('This is the {} group'.format(name))
print(group)
print('\n')
# 複数のキーでも同じ事ができます。
for (k1,k2) , group in dframe.groupby(['k1','k2']):
print('Key1 = {} Key2 = {}'.format(k1,k2))
print(group)
print('\n')
gr = dframe.groupby('k1')
gr.get_group('X')
# リストを作ってそれを辞書にするこもできます。
group_dict = dict(list(dframe.groupby('k1')))
group_dict['X']
# 列方向(axis = 1)についても同じような事ができます。
# ちょっと複雑ですが、
group_dict_axis1 = dict(list(dframe.groupby(dframe.dtypes,axis=1)))
group_dict_axis1