python DataFrame数据分组统计groupby()函数,怒斩获了30家互联网公司offer

1.2 二级分类_分组求和


给groupby()传入一个列表,列表中的元素为分类字段,从左到右分类级别增大。(一级分类、二级分类…)

import pandas as pd

data = [[‘a’, ‘A’, ‘1等’, 109], [‘b’, ‘B’, ‘1等’, 112], [‘c’, ‘A’, ‘1等’, 125], [‘d’, ‘B’, ‘2等’, 120],

[‘e’, ‘B’, ‘1等’, 126], [‘f’, ‘B’, ‘2等’, 133], [‘g’, ‘A’, ‘2等’, 124], [‘h’, ‘B’, ‘1等’, 134],

[‘i’, ‘A’, ‘2等’, 117], [‘j’, ‘A’, ‘2等’, 128], [‘h’, ‘A’, ‘1等’, 130], [‘i’, ‘B’, ‘2等’, 122]]

index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

columns = [‘name’, ‘class_1’, ‘class_2’, ‘num’]

df = pd.DataFrame(data=data, index=index, columns=columns)

print(df)

print(“=================================================”)

df1 = df.groupby([‘class_1’, ‘class_2’]).sum() # 分组统计求和

print(df1)

在这里插入图片描述


1.3 对DataFrameGroupBy对象列名索引(对指定列统计计算)


其中,df.groupby(‘class_1’)得到一个DataFrameGroupBy对象,对该对象可以使用列名进行索引,以对指定的列进行统计。

如:df.groupby(‘class_1’)[‘num’].sum()

import pandas as pd

data = [[‘a’, ‘A’, ‘1等’, 109], [‘b’, ‘B’, ‘1等’, 112], [‘c’, ‘A’, ‘1等’, 125], [‘d’, ‘B’, ‘2等’, 120],

[‘e’, ‘B’, ‘1等’, 126], [‘f’, ‘B’, ‘2等’, 133], [‘g’, ‘A’, ‘2等’, 124], [‘h’, ‘B’, ‘1等’, 134],

[‘i’, ‘A’, ‘2等’, 117], [‘j’, ‘A’, ‘2等’, 128], [‘h’, ‘A’, ‘1等’, 130], [‘i’, ‘B’, ‘2等’, 122]]

index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

columns = [‘name’, ‘class_1’, ‘class_2’, ‘num’]

df = pd.DataFrame(data=data, index=index, columns=columns)

print(df)

print(“=================================================”)

df1 = df.groupby(‘class_1’)[‘num’].sum()

print(df1)

代码运行结果同上。


<
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Pandas 中,`groupby` 函数可以把数据按照指定的列进行分组,然后对每个分组进行相应的操作。如果我们需要对每个分组中的某一列进行位移操作,可以使用 `shift` 函数。 例如,假设我们有一个 DataFrame,其中包含了每个城市每天的温度数据,我们想要计算每个城市两天之间的温度变化,可以按照城市进行分组,然后对温度列进行 `shift` 操作,如下所示: ```python import pandas as pd # 创建 DataFrame df = pd.DataFrame({ 'city': ['Beijing', 'Beijing', 'Beijing', 'Shanghai', 'Shanghai', 'Shanghai'], 'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-01', '2020-01-02', '2020-01-03'], 'temperature': [1, 2, 3, 4, 5, 6] }) # 按照城市分组,并对温度列进行 shift 操作 df['temperature_change'] = df.groupby('city')['temperature'].shift(-1) - df['temperature'] print(df) ``` 输出结果如下: ``` city date temperature temperature_change 0 Beijing 2020-01-01 1 1.0 1 Beijing 2020-01-02 2 1.0 2 Beijing 2020-01-03 3 NaN 3 Shanghai 2020-01-01 4 1.0 4 Shanghai 2020-01-02 5 1.0 5 Shanghai 2020-01-03 6 NaN ``` 可以看到,我们成功地计算出了每个城市两天之间的温度变化。在这个例子中,我们使用了 `shift(-1)` 对温度列进行位移操作,表示往后移动一行。如果我们想要往前移动一行,可以使用 `shift(1)`。同时,我们还需要对计算出的结果进行命名,这里我们把它命名为 `temperature_change`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值