最近需要根据已有的数据计算这样一组数据:
- 股票名称
- 股票代码
- 推荐人数
- 平均分数
- 最大幅度
看到这样的需求,首先想到的是利用pandas的groupby功能。
一、获取数据
plain
1 | sql = "select ID, CODE, NAME, SCORE, Target from table_info" |
二、GroupBy处理
1, 获取推荐人数
plain
1 | grouped = df.groupby(['CODE','NAME']) |
2, 获取平均分数
plain
1 | df_score_mean = grouped['SCORE'].mean() |
3,获取最大幅度
plain
1 | df_target_max = grouped['Target'].max() |
三、数据重组
求得了各项的值后,我们需要把这些值重组聚合起来。
利用pandas的concat函数
plain
1 | dfs = pd.concat([df_count, df_score_mean, df_target_max], axis=1, join='inner') |
axis=1:作用在列上
join=’inner’:采用内连接,取交集
由于code和name是行索引,需要把这两项变成单独的两列:
plain
1 | df_index = pd.DataFrame(dfs.index) |