Замена всех 0 в столбце в кадре данных Python медианным значением столбца изменяет тип данных на «O» - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть большой массив данных pandas с 10000 строками и 33 столбцами.Один из столбцов - «Возраст» с типом данных «int64» и значительными пропущенными значениями.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10000 entries, 0 to 9999
Data columns (total 33 columns):
customer                      10000 non-null int64
age                          10000 non-null int64

Отсутствующие значения были записаны как 0 в данных.Пропущенные значения:

 df['customer'][df[' age']==0].count()
 >2942

Я пытаюсь заменить все такие 0 на медиану:

df[' age'].replace(to_replace=0, value = df[' age'].median, inplace = True)

Кажется, все работает нормально.Но он изменяет тип данных столбца на O:

df[' age'].dtype
>dtype('O')

Что не так?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Вероятно, лучше заменить отсутствующие данные на NaN, а затем заполнить эти значения NaN медианой.

В противном случае вы фактически учитываете отсутствующие данные для вычисления медианы

df = pd.DataFrame([0,1,2,3,], columns = ['data'])
df[df.data == 0] = np.nan
print(df)

   data
0   NaN
1   1.0
2   2.0
3   3.0

df.fillna(df.median())

   data
0   2.0
1   1.0
2   2.0
3   3.0
0 голосов
/ 20 ноября 2018

Заменить

df[' age'].replace(to_replace=0, value = df[' age'].median, inplace = True)

на

df[' age'].replace(to_replace=0, value = df[' age'].median(), inplace = True)

Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...