gpt4 book ai didi

python - Groupby 类和计数特征中的缺失值

转载 作者:IT老高 更新时间:2023-10-28 21:08:14 26 4
gpt4 key购买 nike

我有一个问题,我在网络或文档中找不到任何解决方案,即使我认为这很微不足道。

我想做什么?

我有一个这样的数据框

CLASS FEATURE1 FEATURE2 FEATURE3
X A NaN NaN
X NaN A NaN
B A A A

我想按标签(CLASS)分组并显示每个特征中计算的 NaN 值的数量,使其看起来像这样。这样做的目的是大致了解缺失值如何分布在不同的类中。

CLASS FEATURE1 FEATURE2 FEATURE3
X 1 1 2
B 0 0 0

我知道如何接收 nonnull-Values 的数量 - df.groupby['CLASS'].count()

NaN-Values 有类似的东西吗?

我试图从 size() 中减去 count(),但它返回了一个未格式化的输出,其中填充了值 NaN

最佳答案

isna计算一个掩码,然后分组求和:

df.drop('CLASS', 1).isna().groupby(df.CLASS, sort=False).sum().reset_index()

CLASS FEATURE1 FEATURE2 FEATURE3
0 X 1.0 1.0 2.0
1 B 0.0 0.0 0.0

另一种选择是使用 rsub 沿 0th 轴从 count 中减去 size 作为索引对齐减法:

df.groupby('CLASS').count().rsub(df.groupby('CLASS').size(), axis=0)

或者,

g = df.groupby('CLASS')
g.count().rsub(g.size(), axis=0)

       FEATURE1  FEATURE2  FEATURE3
CLASS
B 0 0 0
X 1 1 2

有很多好的答案,所以这里有一些 timeits 供您阅读:

df_ = df
df = pd.concat([df_] * 10000)

%timeit df.drop('CLASS', 1).isna().groupby(df.CLASS, sort=False).sum()
%timeit df.set_index('CLASS').isna().sum(level=0)
%%timeit
g = df.groupby('CLASS')
g.count().rsub(g.size(), axis=0)

11.8 ms ± 108 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
9.47 ms ± 379 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
6.54 ms ± 81.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

实际性能取决于您的数据和设置,因此您的里程可能会有所不同。

关于python - Groupby 类和计数特征中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947196/

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