gpt4 book ai didi

python - 根据值(value)对 Pandas 数据框中的数据进行分类

转载 作者:行者123 更新时间:2023-11-28 22:50:40 26 4
gpt4 key购买 nike

我经常需要对一系列数字进行分类:

例如:

|Num| cat|
| 2 |low |
| 7 | med|
| 10|high|

我想要的!我想构建两个函数。

函数 1.- 接受 3 个参数: 参数一:数据框名称 参数 2:数据框中的列名 参数3:类别数,比如我要(5)

此函数将根据我想要的 5 个类别:(1,2),(3,4),(5,6),(7,8 ),(9,10).

我在想类似 (max - min)/num categories 的东西,但不知何故它会计算出这些范围。

然后函数 1 将返回范围 (1,2),(3,4),(5,6),(7,8),(9,10)。

函数 2.- 将接受 3 个参数: 参数 1:数据框名称 参数 2:来自 pandas 数据框的列名(与函数 1 相同) 参数 3。要在数据框中创建的新列的名称。 参数 4. 函数 1 的一组范围。 参数 5. 以及类别列表,['low','med','high'] 等

该函数随后会创建包含类别的新列。

最佳答案

我认为您正在寻找 cut :

In [11]: s = pd.Series(np.random.randint(1, 11, (10, )))

In [12]: s
Out[12]:
0 7
1 10
2 5
3 8
4 5
5 4
6 3
7 3
8 4
9 1
dtype: int64

In [13]: cat = pd.cut(s, [0, 9, 10])

In [14]: cat
Out[14]:
(0, 9]
(9, 10]
(0, 9]
(0, 9]
(0, 9]
(0, 9]
(0, 9]
(0, 9]
(0, 9]
(0, 9]
Levels (2): Index(['(0, 9]', '(9, 10]'], dtype=object)

In [15]: cat.labels
Out[15]: array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0])

你要么只是映射到标签上:

In [16]: map({0: 'low', 1: 'high'}.get, cat.labels)
Out[16]: ['low', 'high', 'low', 'low', 'low', 'low', 'low', 'low', 'low', 'low']

或者可能只是更改级别(名称):

In [17]: cat.levels = ['low', 'high']

In [18]: cat
Out[18]:
low
high
low
low
low
low
low
low
low
low
Levels (2): Index(['low', 'high'], dtype=object)

您可以将其设置为 DataFrame 的系列或列。

其实你可以直接使用labels参数来获取:

In [21]: pd.cut(s, [0, 9, 10], labels=['low', 'high'])

关于python - 根据值(value)对 Pandas 数据框中的数据进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467590/

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