如何使用python中的比率填充丢失的性别数据?

时间:2019-05-17 13:37:58

标签: python pandas data-analysis missing-data

我想按比例在数据集中填充缺少的性别数据。

我使用布尔值索引和head或tail函数选择我想要的顶部数据,但是当我使用fillna函数时,它不起作用。但是在我尝试之后,它仅在没有布尔值索引的情况下运行,我怎么能得到示例中的前3个空值,并用0填充。

a = pd.DataFrame(np.random.randn(50).reshape((10,5)))
a[0][1,3,4,6,9] = np.nan
a[0][a[0].isnull()].head(3).fillna(value = '0', inplace = True)

数据框未填满NaN

2 个答案:

答案 0 :(得分:1)

您应该使用loc函数,否则您将永远不会赋值。这是您可以做的:

a.loc[a[0].isnull().index[0:3], 0] = 0

In [1] : print(a)
Out[1] : 0  1   2   3   4
0   0.786182    -0.474953   -0.285881   -0.285502   -0.541957
1   0.000000    0.648042    1.104871    1.237512    -0.156453
2   -1.327987   1.851947    -0.522366   0.631213    -0.960167
3   0.000000    0.561111    -0.945439   -1.414678   0.433246
4   0.000000    -1.463828   0.141122    1.468288    0.649452
5   1.554890    -0.411142   -1.162577   -0.186640   0.774959
6   0.000000    -0.061410   -0.312673   -1.324719   1.763257
7   0.587035    0.265302    -0.793746   -0.148613   0.059330
8   0.909685    1.169786    -1.289559   -0.090185   -0.024272
9   0.000000    0.606329    -0.806034   1.102597    0.820976

答案 1 :(得分:-1)

从数据开始:

a = pd.DataFrame(np.random.randn(50).reshape((10,5)))
a[0][1,3,4,6,9] = np.nan

给予

          0         1         2         3         4
0 -0.388759 -0.660923  0.385984  0.933920  0.164083
1       NaN -0.996237 -0.384492  0.191026 -1.168100
2 -0.773971  0.453441 -0.543590  0.768267 -1.127085
3       NaN -1.051186 -2.251681 -0.575438  1.642082
4       NaN  0.123432  1.063412 -1.556765  0.839855
5 -1.678960 -1.617817 -1.344757 -1.469698  0.276604
6       NaN -0.813213 -0.077575 -0.064179  1.960611
7  1.256771 -0.541197 -1.577126 -1.723853  0.028666
8  0.236197  0.868503 -1.304098 -1.578005 -0.632721
9       NaN -0.227659 -0.857427  0.010257 -1.884986

现在您要处理零列,因此我们使用限制为3的fillna并替换该列

a[0].fillna(0, inplace=True, limit=3)

给予

          0         1         2         3         4
0 -0.388759 -0.660923  0.385984  0.933920  0.164083
1  0.000000 -0.996237 -0.384492  0.191026 -1.168100
2 -0.773971  0.453441 -0.543590  0.768267 -1.127085
3  0.000000 -1.051186 -2.251681 -0.575438  1.642082
4  0.000000  0.123432  1.063412 -1.556765  0.839855
5 -1.678960 -1.617817 -1.344757 -1.469698  0.276604
6       NaN -0.813213 -0.077575 -0.064179  1.960611
7  1.256771 -0.541197 -1.577126 -1.723853  0.028666
8  0.236197  0.868503 -1.304098 -1.578005 -0.632721
9       NaN -0.227659 -0.857427  0.010257 -1.884986