gpt4 book ai didi

python - pandas - 添加一个基于现有值的列(bins,qcut)

转载 作者:太空狗 更新时间:2023-10-30 01:23:01 26 4
gpt4 key购买 nike

我正在慢慢地从 R 转向 python + pandas,我面临着一个我无法解决的问题......

我需要离散化一列中的值,方法是将它们分配给 bin,并将具有这些 bin 名称的列添加到原始 DataFrame。我正在尝试使用 pandas.qcut,但生成的 Categorical 对象似乎不能很好地与 DataFrame 配合使用。

一个例子:

import pandas as pd
df1 = pd.DataFrame(np.random.randn(10), columns=['a'])
df1['binned_a'] = pd.qcut(df1['a'],4)

现在,当尝试在 df1 上调用 describe 时,我看不到新列:

>>> df1.describe()
a
count 10.000000
mean 0.594072
std 1.109981
min -0.807307
25% -0.304550
50% 0.545839
75% 1.189487
max 2.851922

然而,它显然是存在的:

>>> df1
a binned_a
0 0.190015 (-0.305, 0.546]
1 0.140227 (-0.305, 0.546]
2 1.380000 (1.189, 2.852]
3 -0.522530 [-0.807, -0.305]
4 -0.452810 [-0.807, -0.305]
5 2.851922 (1.189, 2.852]
6 -0.807307 [-0.807, -0.305]
7 0.901663 (0.546, 1.189]
8 1.010334 (0.546, 1.189]
9 1.249205 (1.189, 2.852]

我做错了什么?我想要的结果是获得一个包含 4 个描述 bin 的唯一字符串值的列(如 R 中的因子)。


编辑:

正如 Dan 正确发现的那样,summary() 方法不会显示包含纯文本数据的列,因此这个神秘的问题就解决了 :) 非常感谢!

最佳答案

我从来不是 R 用户,但如果我理解你的意思,你想将数据分组到 bin 中并描述每个 bin。

In [9]: df.groupby('binned_a').describe().unstack()
Out[9]: a \
count mean std min 25% 50%
binned_a
(-0.113, 0.109] 2 0.025114 0.010264 0.017856 0.021485 0.025114
(-0.337, -0.113] 2 -0.282838 0.056445 -0.322751 -0.302794 -0.282838
(0.109, 0.563] 3 0.354481 0.214402 0.134978 0.250027 0.365076
[-1.842, -0.337] 3 -1.003969 0.765167 -1.841622 -1.335073 -0.828523


75% max
binned_a
(-0.113, 0.109] 0.028742 0.032371
(-0.337, -0.113] -0.262882 -0.242925
(0.109, 0.563] 0.464233 0.563390
[-1.842, -0.337] -0.585142 -0.341762

要完全避免分类,请参阅 https://stackoverflow.com/a/17150734/1221924

关于python - pandas - 添加一个基于现有值的列(bins,qcut),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17449896/

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