Почему методы dropna () и replace () не работают для отсутствующих данных в кадре данных? - PullRequest
1 голос
/ 03 мая 2019

Я начал с курса по науке о данных, который требует от меня обработки пропущенных данных, либо путем удаления строки, содержащей NaN в подмножестве «price», либо замены NaN некоторым средним значением. Однако оба моих dropna () и replace () не работают. В чем может быть проблема?

Я выполнил множество решений по стеку, но моя проблема не была решена. Я также попытался просмотреть pandas.pydata.org, чтобы найти решение, в котором я узнал о различных аргументах dropna (), таких как thresh, how = 'any' и т. Д., Но ничего не помогло.

import pandas as pd

import numpy as np


url="https://archive.ics.uci.edu/ml/machine-learning-databases/autos/imports-85.data"
df=pd.read_csv(url,header=None)


'''
Our data comes without any header or column name,hence we assign each column a header name.
'''


headers=["symboling","normalized-losses","make","fuel-type","aspiration","num-of-doors","body-style","drive-wheels","engnie-location","wheel-base","length","width","height","curb-weight","engine-type","num-of-cylinders","engine-size","fuel-system","bore","stroke","compression-ratio","horsepower","peak-rpm","city-mpg","highway-mpg","price"]
df.columns=headers


'''
Now that we have to eliminate rows containing NaN or ? in "price" column in our data
'''

df.dropna(subset=["price"], axis=0, inplace=True) 

df.head(12)

#or

df.dropna(subset=["price"], how='any') 

df.head(12)

#also to replace

mean=df["price"].mean()

df["price"].replace(np.nan,mean)

df.head(12)

Ожидалось, что все строки содержат NaN или "?" в столбце «цена» необходимо удалить для dropna () или заменить для replace (). Однако данные, похоже, не изменились.

1 Ответ

0 голосов
/ 04 мая 2019

Пожалуйста, используйте этот код, чтобы уронить?Значение выглядит следующим образом:

df['price'] = pd.to_numeric(df['price'], errors='coerce')
df = df.dropna()

to_numeric метод преобразует аргумент в числовой тип.

И, coerce устанавливает инвалидов как NaN.

Затем, dropna может очистить записи включают NaN.

...