gpt4 book ai didi

python - 为什么我在执行 GroupBy 后会丢失数据?

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

所以这个数据集有 200 万条患者记录。我被要求对每个变量进行二分法,这部分已经完成,但是任何患者都可以有多个记录,所以我必须按患者对它们进行分组。当我执行此操作时,我丢失了数据;知道为什么吗?这并不是在每个领域都会发生:

enter image description here

我正在添加示例数据帧的图像以执行 groupby('npaciente),然后您可以看到对于 valu_ counts 中的每一列,它不会在 complicacionescronicas 列中返回任何内容

enter image description here

最佳答案

我认为在聚合 max 之后有问题,你得到所有的 NaN,所以 value_counts返回空 Series:

df = pd.DataFrame({'A':[1,1,0,np.nan],
'npatience':[np.nan,np.nan,4,5],
'C':[1,0,np.nan,np.nan],
'D':[1,3,5,7]})

print (df)
A C D npatience
0 1.0 1.0 1 NaN
1 1.0 0.0 3 NaN
2 0.0 NaN 5 4.0
3 NaN NaN 7 5.0

print (df.A.value_counts())
1.0 2
0.0 1
Name: A, dtype: int64

print (df.C.value_counts())
0.0 1
1.0 1
Name: C, dtype: int64

g = df.groupby('npatience').max()
print (g)
A C D
npatience
4.0 0.0 NaN 5
5.0 NaN NaN 7

print (g.C)
npatience
4.0 NaN
5.0 NaN
Name: C, dtype: float64

#check if in column are all values NaNs
print (g.C.isnull().all())
True

print (g.A)
npatience
4.0 0.0
5.0 NaN
Name: A, dtype: float64


print (g.C.value_counts())
Series([], Name: C, dtype: int64)

print (g.A.value_counts())
0.0 1
Name: A, dtype: int64

print (g.C.value_counts(dropna=False))
NaN 2
Name: C, dtype: int64

print (g.A.value_counts(dropna=False))
NaN 1
0.0 1
Name: A, dtype: int64

编辑:

groupby 默认删除 NaN 行(不能按 NaN 分组),所以它与调用相同 dropgroupby 之前:

g = df.dropna(subset=['npatience'])
print (g)
A C D
npatience
4.0 0.0 NaN 5
5.0 NaN NaN 7

print (g.C)
2 NaN
3 NaN
Name: C, dtype: float64

#check if in column are all values NaNs
print (g.C.isnull().all())
True

不删除 NaNs 的 groupby 解决方案是用值(不在 df 中)替换 NaNs,例如 1000 :

g = df.fillna(1000).groupby('npatience').max()
print (g)
A C D
npatience
4.0 0.0 1000.0 5
5.0 1000.0 1000.0 7
1000.0 1.0 1.0 3

print (g.C.value_counts())
1000.0 2
1.0 1
Name: C, dtype: int64

关于python - 为什么我在执行 GroupBy 后会丢失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45454307/

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