Don*_*eon 6 python missing-data pandas
我有一个熊猫数据框,其中有几个缺失值。我注意到非缺失值彼此接近。因此,我想通过随机选择非缺失值来估算缺失值。
例如:
import pandas as pd
import random
import numpy as np
foo = pd.DataFrame({'A': [2, 3, np.nan, 5, np.nan], 'B':[np.nan, 4, 2, np.nan, 5]})
foo
A B
0 2 NaN
1 3 4
2 NaN 2
3 5 NaN
4 NaN 5
Run Code Online (Sandbox Code Playgroud)
我想比如foo['A'][2]=2
和foo['A'][5]=3
我的熊猫的形状数据框是(6940,154)。我尝试这个
foo['A'] = foo['A'].fillna(random.choice(foo['A'].values.tolist()))
Run Code Online (Sandbox Code Playgroud)
但它不起作用。你能帮我实现吗?最好的祝福。
您可以使用pandas.fillna
method 和random.choice
method 随机选择特定列来填充缺失值。
import random
import numpy as np
df["column"].fillna(lambda x: random.choice(df[df[column] != np.nan]["column"]), inplace =True)
Run Code Online (Sandbox Code Playgroud)
其中 column 是您要nan
随机填充非值的列。
小智 6
我这样做是为了用随机非 NaN 值填充 NaN 值:
import random
df['column'].fillna(random.choice(df['column'][df['column'].notna()]), inplace=True)
Run Code Online (Sandbox Code Playgroud)
这在 Pandas DataFrame 上对我很有效
def randomiseMissingData(df2):
"randomise missing data for DataFrame (within a column)"
df = df2.copy()
for col in df.columns:
data = df[col]
mask = data.isnull()
samples = random.choices( data[~mask].values , k = mask.sum() )
data[mask] = samples
return df
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5610 次 |
最近记录: |