Python:双向空值表
我有这样一个数据帧:Python:双向空值表,python,pandas,Python,Pandas,我有这样一个数据帧: ID - Age - Sex 1 - 20 - Null 2 - 40 - F 3 - 40 - M 4 - Null - M 5 - 18 - Null 我想知道年龄数据中的空值分布是否在男女之间是相等的,所以下面这样的双向表将非常有用 Has Age Null age Male x 1-x Female y 1-y 我怎样才能在熊猫身上做到这一点 谢谢大家! 说你从 df = pd.DataFr
ID - Age - Sex
1 - 20 - Null
2 - 40 - F
3 - 40 - M
4 - Null - M
5 - 18 - Null
我想知道年龄数据中的空值分布是否在男女之间是相等的,所以下面这样的双向表将非常有用
Has Age Null age
Male x 1-x
Female y 1-y
我怎样才能在熊猫身上做到这一点
谢谢大家! 说你从
df = pd.DataFrame({
'age': [20, 40, 40, None, 18],
'sex': [None, 'F', 'M', 'M', None]})
然后你可以用
>>> df.age.isnull().groupby(df.sex).value_counts().to_frame().unstack()
age
age False True
sex
F 1.0 NaN
M 1.0 1.0
另一种方法是,要计算按性别划分的缺失值的百分比,可以执行以下操作:
df.groupby('sex')['age'].apply(lambda x: x.isnull().sum() / len(x))
sex
F 0.0
M 0.5
我将使用
交叉表
pd.crosstab(df.sex,df.age.isnull())
Out[86]:
age False True
sex
F 1 0
M 1 1
获取您的输出
s=pd.crosstab(df.sex,df.age.isnull())
s=s.div(s.sum(1),0)
s
Out[98]:
age False True
sex
F 1.0 0.0
M 0.5 0.5
输出中的x和1-x是什么?你不能简单地做一下
df.groupby('Sex')['Age'].mean()
谢谢@YOLO我从来没有在Pandas中使用过groupby,所以我不确定这个例子是如何工作的,但我看到你在使用一个平均值,我只想知道年龄列中有多少(或%的)缺失值,按性别划分。这里没有计算平均值的值。还有其他建议吗?