pandas.dataframe.groupby做量化知道这些就够了

  • pandas.DataFrame.groupby官方文档

DataFrame.groupby(by=None, axis=0, level=None, as_index= True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)

# return                    DataFrameGroupBy or SeriesGroupBy

# as_index= True   默认用于分组的列被设置成,分组后再操作所得结果的index
  • 案例演示具体操作

df = pd.DataFrame({'Animal' : ['Falcon', 'Falcon','Parrot', 'Parrot'], 'Max Speed' : [380., 370., 24., 26.]})

df.groupby(by= ‘Animal’) 这个操作并不会真正改变df本身

df.groupby(‘Animal’).size() 对groupby之后每个组内进行操作,每个组内的数据行数

df.groupby(‘Animal’).get_group(‘Falcon’) 获取某一个分组

对list可用的函数都可以对df.groupby()操作,指的是对df.gruopby()之后的每一个分组进行操作

df.groupby(‘Animal’).describe()

df.groupby(‘Animal’).head() # 取每组数据的前5行

df.groupby(‘Animal’).tail()

df.groupby(‘Animal’).frist() # 取每组数据的第一行

df.groupby(‘Animal’).last()

df.groupby(‘Animal’).nth() # 取每组数据的指定某行

df.groupby(‘Animal’, as_index = False).nth() # 默认使用原来的index,不用’Animal’这一列作为index

groupby之后,也可以只取某几列进行操作

df.groupby(‘Animal’)[‘Falcon’].mean() 先完成groupby得到各组,再取各组内的[‘Falcon’]列,再对这一列求均值。

df.groupby(‘Animal’)[‘Falcon’].sum()

df.groupby(‘Animal’)[‘Falcon’].rank() 在组内排序

df.groupby(‘Animal’)[‘Falcon’].rank(pct= True) 排名的百分比

可以对一列分组,也可以对多列分组

df.loc[df[‘candle_begin_time’].dt.hour < 12, ‘时间’] = ‘上午’

df.groupby([‘symbol’, ‘时间’]).size() 先依据symbol分组,再在组内依据’时间’分组

对groupby后每个组进行遍历,遍历时对每一个group进行操作,操作完后再将group合并起来group.append()

for n, group in df.groupby():

​ print(n) 对应分组组名

​ print(group) 对应一个DataFrame

.
.
.
2019-03-12 22:09:36写于杭州

你可能感兴趣的:(小白学Python)