分组方式

注意第一种与第三种方式的区别。

import pandas as pd
dic={'省份':['A','A','A','B','C'],'城市':['a','a','a_','b','c',],'订单额':[1,2,3,4,5],'规模':[5,4,3,2,1]}
df=pd.DataFrame(dic)
# print(df)
df1=df.groupby('城市')['订单额'].sum()
df2=df.groupby(['省份','城市'])[['订单额','规模']].sum()
df3=df.groupby(['城市'])[['订单额']].sum()

1.df1=df.groupby('分组列名')['作用列名'].聚合函数()

此时df坍缩成一对一映射的数据集,类似于map容器。


2.df2=df.groupby(['分组列名1','分组列名2'])[['作用列名1', '作用列名2' ]].聚合函数()

仍可以看作是一般的df对象,'分组列名1'是合法的行索引。


3.df3=df.groupby(['分组列名'])[['作用列名']].聚合函数()

比第一种多了一层 [ ] ,但结构与第二种相同。


数据访问

单个值

df1['分组列名']

                df2.loc['分组列名1','分组列名2']['作用列名1/2']

                df3.loc['分组列名']['作用列名']

print(df1['a'])#实际上是一对一的映射关系
print(df2.loc['A','a']['订单额'])
#df2.loc['a']['订单额']报错:此对象不存在名为的'a'索引,可通过set_index解决
#df2.loc['A']['订单额']是一组只有A省份的城市的'订单额'
print(df3.loc['a']['订单额'])


单行

df1['分组列名']

                df2.loc['分组列名1','分组列名2']

                df3.loc['分组列名']


        一整列

list(df1)

                list(df2['分组列名1/2'])

                list(df3['分组列名'])

print(list(df1))
print(list(df2['订单额']))
print(list(df3['订单额']))


set_index的用法

#set_index用法
df2=df2.reset_index()#重置行索引,把原来的行索引内容变为列【此处是新增'省份'和'城市'两列数据】,行索引变为0,1,2...
df2=df2.set_index('城市')#设置行索引为'城市'
#此时的df2相当于是df3多加了'省份'这一列
print(df2)


完整代码

import pandas as pd
dic={'省份':['A','A','A','B','C'],'城市':['a','a','a_','b','c',],'订单额':[1,2,3,4,5],'规模':[5,4,3,2,1]}
df=pd.DataFrame(dic)
# print(df)
df1=df.groupby('城市')['订单额'].sum()
df2=df.groupby(['省份','城市'])[['订单额','规模']].sum()
df3=df.groupby(['城市'])[['订单额']].sum()# 行索引
print(df1.index)
print(df2.index)
print(df3.index)
#单个值
print(df1['a'])#实际上是一对一的映射关系
print(df2.loc['A','a']['订单额'])
#df2.loc['a']['订单额']报错:此对象不存在名为的'a'索引,可通过set_index解决
#df2.loc['A']['订单额']是一组只有A省份的城市的'订单额'
print(df3.loc['a']['订单额'])
#一整列
print(list(df1))
print(list(df2['订单额']))
print(list(df3['订单额']))#set_index用法
df2=df2.reset_index()#重置行索引,把原来的行索引内容变为列【此处是新增'省份'和'城市'两列数据】,行索引变为0,1,2...
df2=df2.set_index('城市')#设置行索引为'城市'
#此时的df2相当于是df3多加了'省份'这一列
print(df2)

记录一种修改数据的算法(可能numpy库有,但博主暂未涉猎)

对原数据集将特定区间内的数据修改成同一个值。

import pandas as pd
dic={'省份':['A','A','A','B','C'],'城市':['a','a','a_','b','c',],'订单额':[1,2,3,4,5],'规模':[5,4,3,2,1]}
df=pd.DataFrame(dic)df_tmp=df[df['订单额'].between(1,2)]
df_tmp['订单额']=0
print(df_tmp)
df[df['订单额'].between(1,2)]=df_tmp
print(df)

当然这样修改数据是不太规范的,所以有警告:

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

pandas df.groupby()分组后的数据访问,set_index的用法相关推荐

  1. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均(Exponential Moving Average).例如,计算某公司的多个店铺每N天(5 ...

  2. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录

  3. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count).例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数 目录

  4. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录

  5. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum).例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和 目录

  6. pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值、滚动中位数、滚动最大最小值、滚动加和等

    pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值.滚动中位数.滚动最大最小值.滚动加和等 目录

  7. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值

    pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值 目录

  8. php groupby后找最大时间,pandas获取groupby分组里最大值所在的行方法

    下面为大家分享一篇pandas获取groupby分组里最大值所在的行方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 pandas获取groupby分组里最大值所在的行方法 如下面这个Da ...

  9. pandas之groupby分组与pivot_table透视

    一.groupby 类似excel的数据透视表,一般是按照行进行分组,使用方法如下. df.groupby(by=None, axis=0, level=None, as_index=True, so ...

最新文章

  1. SQL删除重复的记录(只保留一条)
  2. Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(转载学习)
  3. [蓝桥杯][基础练习VIP]完美的代价-贪心
  4. mysql join不加关联条件的含义
  5. python对于一元线性回归模型_Python|机器学习-一元线性回归
  6. linux内核 can总线,基于Linux的PC104总线与CAN总线通信设计
  7. 简单的关机程序(C语言)
  8. 96K的3d FPS游戏-毁灭杀手(kkrieger)
  9. 3个方法实现微信多开登陆 适用电脑端(WIN7/WIN10)
  10. 计算机网络安全基础知识复习
  11. 【Pandas】常用姿势积累
  12. 人脸识别摄像头开发板和模组选型
  13. 计算机网络中速率(date rate)和带宽的区别
  14. 【CF917E】Upside Down(哈希二分)(后缀数组)(AC自动机)
  15. 【硬刚大数据】从零到大数据专家之Kylin入门/原理/调优
  16. 【翻译】硅谷创业教父保罗·格雷厄姆:做不可拓展的事 Do things that don't scale...
  17. 360搜索启用“360sou.com”与“360so.com”独立域名
  18. R语言画图——添加数学表达式和R2(Ⅱ)
  19. 【软件测试】测试驱动开发与行为驱动开发
  20. 刘汝佳算法入门笔记(1)

热门文章

  1. ****网 购书投诉电话 生活启示
  2. MySQL解析JSON格式
  3. 2023年什么行业不适合创业赚钱的项目
  4. flyme禁止系统更新_魅族Flyme系统更新 优化这些功能让果粉都不淡定
  5. 【python学习】-使用sklearn对数据进行线性回归,并绘制回归线
  6. C#语言开发规范-ching版
  7. vscode设置删除行快捷键
  8. 阿里P7为了证明自己确实年入百万,晒出了他的工资
  9. 生物医药实验室安全知识202203第九次作业答案(2022.11.11)
  10. VS2015 解决msvcp120d.dll和msvcr120d.dll缺失异常问题