gpt4 book ai didi

python - 类别中的 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:41 25 4
gpt4 key购买 nike

我正在尝试对应用程序的数据集进行线性回归,我分配的标签是应用程序的评级。当试图将标签分成几类时,即使没有指定,也会出现第三类“NaN”。

bins = (2, 3, 5)
group_names = ['bad', 'good']
appStore['user_rating'] = pd.cut(appStore['user_rating'], bins = bins, labels = group_names)
appStore['user_rating'].unique()

结果

[good, bad, NaN]
Categories (2, object): [bad < good]

我什至运行了代码

appStore.isnull().sum()

并且它没有显示空值,所有字段的结果都是 0。

编辑:我什至将 bins 编辑为 bins = (0, 3, 5) 以拆分数据,因为列中的最小值是 0,最大值是 5。它仍然有一个 NaN。

这是我运行 sns.countplot(appStore['user_rating']) 时的结果:

如您所见,不会有异常数据。

最佳答案

使用 pandas.cut()方法,我们可以像您一样定义具有 bin edges 的 bin:

bins = (2, 3, 5)

意味着我们定义了两个有效类别:

一个类别的值介于 (2 和 3) 之间,另一个类别介于 (3 和 5) 之间。这些类别之外的每个值的类别都将是 NaN

问题是,您的数据包含超出您定义的间隔的值。我用一个例子来证明它:

import pandas as pd

appStore = pd.DataFrame()
appStore['user_rating'] = [2.3, 3.3, 4, 6]

bins = (2, 3, 5)
group_names = ['bad', 'good']
appStore['user_rating'] = pd.cut(appStore['user_rating'], bins=bins, labels=group_names)
print(appStore['user_rating'].unique())

print()
print(appStore)

输出:

[bad, good, NaN]
Categories (2, object): [bad < good]

user_rating
0 bad
1 good
2 good
3 NaN

如您所见,6 既不在 (2 和 3) 之间,也不在 (3 和 5) 之间。所以基本上你没有异常数据的标签,这就是为什么 pandasNaN 替换一个缺失的标签值。

如果您的数据中没有这样的离群值,那么问题就不会发生:

import pandas as pd

appStore = pd.DataFrame()
appStore['user_rating'] = [2.3, 3.3, 4, 4.5]

bins = (2, 3, 5)
group_names = ['bad', 'good']
appStore['user_rating'] = pd.cut(appStore['user_rating'], bins=bins, labels=group_names)
print(appStore['user_rating'].unique())

print()
print(appStore)

输出:

[bad, good]
Categories (2, object): [bad < good]

user_rating
0 bad
1 good
2 good
3 good

注意:bin 边缘向下排斥向上包含,例如(1,2,3) 边定义的 bin 将不包含 1(它将被归类为 NaN),但会包含 3 作为 (2-3)

关于python - 类别中的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336353/

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