Как очистить грязные данные из dataframe (импортированные из CSV-файла), отфильтровать числа и перенести их в тип float - PullRequest
0 голосов
/ 06 февраля 2019

Есть CSV-файл, содержащий цифры, "***", "(X)"  и NAN.Затем я использую pd.read_csv (), чтобы импортировать это в dataframe.см .: импорт данных

, но все значения в df имеют тип "str".см .: desc data

Я хочу отфильтровать num и перенести их в тип с плавающей запятой, а для остальных - в NAN.Пожалуйста, помогите мне.Спасибо!

1 Ответ

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

Попробуйте использовать NaN фильтр pd.read_csv().Для каждого столбца можно указать разные значения, которые следует учитывать как NaN.В вашем случае это должно работать:

df = pd.read_csv('your_file.csv', na_values={'HC04_VC03': '(X)', 'HC04_VC04': '***'})

Pandas автоматически выберет подходящий тип d для ваших данных.В этом случае вы получите нужные плавающие столбцы.Вы также можете указать тип данных, как вы читаете в CSV-файле, используя параметр dtype = {'GEO.id2': np.int64, 'HC04_VC04': np.float64, 'HC02_VC05': np.float64} или любой другой допустимый dtypes по вашему выбору.Используйте эту опцию с осторожностью, так как установка dtype вызовет ошибку, если данные не могут быть преобразованы в нужный тип, например, если вы сначала не избавитесь от всех '***' строк.

В качестве альтернативы, вы можетечитать в файле csv без указания типов данных, а затем преобразовывать столбцы после использования pd.to_numeric .Например,

df['GEO.id2'] = pd.to_numeric(df['GEO.id2'], errors = 'ignore') # values that can't be converted to integer types will be left alone

В документации есть другие методы для обработки данных, которые не могут быть преобразованы.

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