Как отбросить процент строк, где значение столбца равно NaN - PullRequest
0 голосов
/ 11 февраля 2019

Допустим, у меня есть df, где в определенном столбце пропущены значения на 50%.

Как можно отбросить, скажем, 10% строк, в которых отсутствуют значения по отношению к столбцу?

Как я могу уменьшить процент пропущенных значений столбца с 50% до 40%?

Ввод (пропущено 50% значений (6/12)):

         0
    0  1.0
    1  1.0
    2  NaN
    3  NaN
    4  NaN
    5  1.0
    6  NaN
    7  1.0
    8  NaN
    9  1.0
   10  NaN
   11  1.0

Вывод (40% значений отсутствуют (4/10)): мы отбросили последние 2 строки NaN с идентификаторами 8 и 10

         0
    0  1.0
    1  1.0
    2  NaN
    3  NaN
    4  NaN
    5  1.0
    6  NaN
    7  1.0
    9  1.0
   11  1.0

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Чтобы получить массив с индексами со значениями nan в вашем столбце, используйте:

nan_indices = df.index[df['your_column'].isna()]

Чтобы отбросить, скажем, первые 20%, используйте:

df.drop(nan_indices[:int(len(nan_indices) * 0.2)])   #to create a new DataFrame, if you want to modify the original one, put inplace=True
0 голосов
/ 11 февраля 2019

Попробуйте это:

# find  NaN entries in your df
nanEntries = df[pd.isnull(df)].index.tolist()
# choose 10% randomly
dropIndices = np.random.choice(nanEntries, size = int(df.shape[0]*0.1))
# drop them
df.drop(dropIndices)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...