使用 pandas 以小数增量计算分箱平均值
Use pandas to calculate binned average with decimal increments
我有一个 pandas 数据框,我想为其计算分箱平均值。
要装箱我的数据,而不是使用箱子的数量,我正在寻找一个解决方案(可能是在线),我可以为其指定箱子大小。例如,来自此数据:
A B
0.1 4.2
0.15 2.0
0.17 3.0
0.2 6.4
0.3 1.0
0.35 5.0
0.4 10.0
0.43 2.0
0.5 8.0
我想为 A 列指定 bin_size=0.1
获取以下数据框作为我的分箱平均值:
A B
(0.1,0.2) 0.14 3.06
(0.3,0.4) 0.35 5.33
(0.4,0.5) 0.44 6.66
如果我要指定垃圾箱的数量,我会通过以下方式解决:
groups = df.groupby(pd.cut(df.A, bins))
df2 = pd.DataFrame(groups.mean())
但是,正如我所说,我正在寻找一种指定垃圾箱大小的解决方案。也许重要的是要强调我的数据集有 33961 行。
您可以使用以 0.1
等间隔的 numpy 数组定义 bins
ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1) #[0, 0.1, 0.2, 0.3 ...]
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()
# A B
# A
# (0.0, 0.1] 0.100000 4.2
# (0.1, 0.2] 0.173333 3.8
# (0.2, 0.3] 0.300000 1.0
# (0.3, 0.4] 0.375000 7.5
# (0.4, 0.5] 0.465000 5.0
我有一个 pandas 数据框,我想为其计算分箱平均值。 要装箱我的数据,而不是使用箱子的数量,我正在寻找一个解决方案(可能是在线),我可以为其指定箱子大小。例如,来自此数据:
A B
0.1 4.2
0.15 2.0
0.17 3.0
0.2 6.4
0.3 1.0
0.35 5.0
0.4 10.0
0.43 2.0
0.5 8.0
我想为 A 列指定 bin_size=0.1
获取以下数据框作为我的分箱平均值:
A B
(0.1,0.2) 0.14 3.06
(0.3,0.4) 0.35 5.33
(0.4,0.5) 0.44 6.66
如果我要指定垃圾箱的数量,我会通过以下方式解决:
groups = df.groupby(pd.cut(df.A, bins))
df2 = pd.DataFrame(groups.mean())
但是,正如我所说,我正在寻找一种指定垃圾箱大小的解决方案。也许重要的是要强调我的数据集有 33961 行。
您可以使用以 0.1
等间隔的 numpy 数组定义bins
ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1) #[0, 0.1, 0.2, 0.3 ...]
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()
# A B
# A
# (0.0, 0.1] 0.100000 4.2
# (0.1, 0.2] 0.173333 3.8
# (0.2, 0.3] 0.300000 1.0
# (0.3, 0.4] 0.375000 7.5
# (0.4, 0.5] 0.465000 5.0