Конвертировать столбцы данных типа объекта с плавающей точкой - PullRequest
0 голосов
/ 01 июля 2018

Я хочу преобразовать все столбцы без плавающего типа моего фрейма данных в плавающий, есть ли способ, которым я могу это сделать. Было бы здорово, если бы я мог сделать это в One Go. Ниже приведен тип

longitude          -    float64 
latitude          -     float64
housing_median_age   -  float64
total_rooms          -  float64
total_bedrooms       -   object
population           -  float64
households            - float64
median_income         - float64
rooms_per_household   - float64
category_<1H OCEAN    -   uint8
category_INLAND        -  uint8
category_ISLAND        -  uint8
category_NEAR BAY     -   uint8
category_NEAR OCEAN    -  uint8

Ниже приведен фрагмент моего кода

import pandas as pd
import numpy as np 
from sklearn.model_selection import KFold

df = pd.DataFrame(housing)
df['ocean_proximity'] = pd.Categorical(df['ocean_proximity']) #type casting 
dfDummies = pd.get_dummies(df['ocean_proximity'], prefix = 'category' )
df = pd.concat([df, dfDummies], axis=1)
print df.head()
housingdata = df
hf = housingdata.drop(['median_house_value','ocean_proximity'], axis=1)
hl = housingdata[['median_house_value']]
hf.fillna(hf.mean,inplace = True)
hl.fillna(hf.mean,inplace = True)

1 Ответ

0 голосов
/ 01 июля 2018

Быстрый и простой способ, если вам не требуется особый контроль над понижением или обработкой ошибок, - это использовать df = df.astype(float).

Для большего контроля вы можете использовать pd.DataFrame.select_dtypes, чтобы выбрать столбцы по dtype. Затем используйте pd.to_numeric для подмножества столбцов.

Настройка

df = pd.DataFrame([['656', 341.341, 4535],
                   ['545', 4325.132, 562]],
                  columns=['col1', 'col2', 'col3'])

print(df.dtypes)

col1     object
col2    float64
col3      int64
dtype: object

Решение

cols = df.select_dtypes(exclude=['float']).columns

df[cols] = df[cols].apply(pd.to_numeric, downcast='float', errors='coerce')

Результат

print(df.dtypes)

col1    float32
col2    float64
col3    float32
dtype: object

print(df)

    col1      col2    col3
0  656.0   341.341  4535.0
1  545.0  4325.132   562.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...