0
我在熊貓的數據框中有一列,大約有78%的缺失值。在熊貓中填充缺失值的比例
剩餘的22%值被分爲三個標籤 - SC,ST,GEN和以下比率。
SC - 16% ST - 8% GEN - 76%
我需要由上述三個值,以替換丟失的值,使得所有的元素的比率保持與上面相同。只要比例如上所述,分配可以是隨機的。
我該如何做到這一點?
我在熊貓的數據框中有一列,大約有78%的缺失值。在熊貓中填充缺失值的比例
剩餘的22%值被分爲三個標籤 - SC,ST,GEN和以下比率。
SC - 16% ST - 8% GEN - 76%
我需要由上述三個值,以替換丟失的值,使得所有的元素的比率保持與上面相同。只要比例如上所述,分配可以是隨機的。
我該如何做到這一點?
這個數據幀開始(僅創造與你相似的東西):
import numpy as np
df = pd.DataFrame({'C1': np.random.choice(['SC', 'ST', 'GEN'], p=[0.16, 0.08, 0.76],
size=1000)})
df.loc[df.sample(frac=0.22).index] = np.nan
它產生22%的NaN一列,剩下的比例類似於你:
df['C1'].value_counts(normalize=True, dropna=False)
Out:
GEN 0.583
NaN 0.220
SC 0.132
ST 0.065
Name: C1, dtype: float64
df['C1'].value_counts(normalize=True)
Out:
GEN 0.747436
SC 0.169231
ST 0.083333
Name: C1, dtype: float64
現在你可以使用filln與np.random.choice:
df['C1'] = df['C1'].fillna(pd.Series(np.random.choice(['SC', 'ST', 'GEN'],
p=[0.16, 0.08, 0.76], size=len(df))))
由此產生的列將hav e這些比例:
df['C1'].value_counts(normalize=True, dropna=False)
Out:
GEN 0.748
SC 0.165
ST 0.087
Name: C1, dtype: float64