gpt4 book ai didi

Python 分箱代码并取平均值

转载 作者:行者123 更新时间:2023-12-01 02:00:06 25 4
gpt4 key购买 nike

我是 Python 新手,正在努力解决以下问题。我有以下数据框:

cat data
1 122.8099975
2 131.02
1 49.123999
2 122.5250015
3 40.86333217
2 61.40250025
2 122.5999985
3 35.02142771
3 246.320007
3 123.885002
3 61.942501
1 247.770004
1 123.885002

bins=array([ 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260])

我想通过执行以下操作来创建一个新列:

对于每个类别(“cat”),将数据分入bins,并取每个bin中项目数的平均值,如以下电子表格所示:

enter image description here

然后将平均值分配给新列中的相关类别:

enter image description here

提前非常感谢。

最佳答案

使用剪切交叉表:

i = pd.cut(df.set_index('cat').data, bins=bins).reset_index()
j = pd.crosstab(i.data, i.cat)

cat 1 2 3
data
(0, 20] 0 0 0
(20, 40] 0 0 1
(40, 60] 1 0 1
(60, 80] 0 1 1
(80, 100] 0 0 0
(100, 120] 0 0 0
(120, 140] 2 3 1
(140, 160] 0 0 0
(160, 180] 0 0 0
(180, 200] 0 0 0
(200, 220] 0 0 0
(220, 240] 0 0 0
(240, 260] 1 0 1

对于第二部分,使用mean,计算平均值,并使用map分配回df -

df['average'] = df['cat'].map(j.mean())
df

cat data average
0 1 122.809998 0.307692
1 2 131.020000 0.307692
2 1 49.123999 0.307692
3 2 122.525001 0.307692
4 3 40.863332 0.384615
5 2 61.402500 0.307692
6 2 122.599999 0.307692
7 3 35.021428 0.384615
8 3 246.320007 0.384615
9 3 123.885002 0.384615
10 3 61.942501 0.384615
11 1 247.770004 0.307692
12 1 123.885002 0.307692

关于Python 分箱代码并取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49776192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com