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,所以我不确定这个例子是如何工作的,但我看到你在使用一个平均值,我只想知道年龄列中有多少(或%的)缺失值,按性别划分。这里没有计算平均值的值。还有其他建议吗?