pandas df.groupby()分组后的数据访问,set_index的用法
分组方式
注意第一种与第三种方式的区别。
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的用法相关推荐
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均(Exponential Moving Average).例如,计算某公司的多个店铺每N天(5 ...
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最大值(rolling max).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最大值 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动计数个数(rolling count).例如,计算某公司的多个店铺每N天(5天)的滚动销售额计数个数 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std).例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动加和(rolling sum).例如,计算某公司的多个店铺每N天(5天)的滚动销售额加和 目录
- pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值、滚动中位数、滚动最大最小值、滚动加和等
pandas使用groupby函数计算dataframe数据中每个分组的滚动统计值(rolling statistics)的语法:例如分组的N天滚动平均值.滚动中位数.滚动最大最小值.滚动加和等 目录
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值
pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动最小值(rolling min).例如,计算某公司的多个店铺每N天(5天)的滚动销售额最小值 目录
- php groupby后找最大时间,pandas获取groupby分组里最大值所在的行方法
下面为大家分享一篇pandas获取groupby分组里最大值所在的行方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 pandas获取groupby分组里最大值所在的行方法 如下面这个Da ...
- pandas之groupby分组与pivot_table透视
一.groupby 类似excel的数据透视表,一般是按照行进行分组,使用方法如下. df.groupby(by=None, axis=0, level=None, as_index=True, so ...
最新文章
- SQL删除重复的记录(只保留一条)
- Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(转载学习)
- [蓝桥杯][基础练习VIP]完美的代价-贪心
- mysql join不加关联条件的含义
- python对于一元线性回归模型_Python|机器学习-一元线性回归
- linux内核 can总线,基于Linux的PC104总线与CAN总线通信设计
- 简单的关机程序(C语言)
- 96K的3d FPS游戏-毁灭杀手(kkrieger)
- 3个方法实现微信多开登陆 适用电脑端(WIN7/WIN10)
- 计算机网络安全基础知识复习
- 【Pandas】常用姿势积累
- 人脸识别摄像头开发板和模组选型
- 计算机网络中速率(date rate)和带宽的区别
- 【CF917E】Upside Down(哈希二分)(后缀数组)(AC自动机)
- 【硬刚大数据】从零到大数据专家之Kylin入门/原理/调优
- 【翻译】硅谷创业教父保罗·格雷厄姆:做不可拓展的事 Do things that don't scale...
- 360搜索启用“360sou.com”与“360so.com”独立域名
- R语言画图——添加数学表达式和R2(Ⅱ)
- 【软件测试】测试驱动开发与行为驱动开发
- 刘汝佳算法入门笔记(1)
热门文章
- ****网 购书投诉电话 生活启示
- MySQL解析JSON格式
- 2023年什么行业不适合创业赚钱的项目
- flyme禁止系统更新_魅族Flyme系统更新 优化这些功能让果粉都不淡定
- 【python学习】-使用sklearn对数据进行线性回归,并绘制回归线
- C#语言开发规范-ching版
- vscode设置删除行快捷键
- 阿里P7为了证明自己确实年入百万,晒出了他的工资
- 生物医药实验室安全知识202203第九次作业答案(2022.11.11)
- VS2015 解决msvcp120d.dll和msvcr120d.dll缺失异常问题