Неверный тип данных при чтении большого текстового файла - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь прочитать следующий файл , используя панд.Код, который я использую, следующий:

df = pd.read_csv("household_power_consumption.txt", header=0, delimiter=';', nrows=5)

df.info () дает правильный вывод.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 9 columns):
Date                     5 non-null object
Time                     5 non-null object
Global_active_power      5 non-null float64
Global_reactive_power    5 non-null float64
Voltage                  5 non-null float64
Global_intensity         5 non-null float64
Sub_metering_1           5 non-null float64
Sub_metering_2           5 non-null float64
Sub_metering_3           5 non-null float64
dtypes: float64(7), object(2)
memory usage: 440.0+ bytes

Но когда япытаюсь прочитать весь набор данных, используя тот же код, за исключением nrows:

df_all = pd.read_csv("household_power_consumption.txt", header=0, delimiter=';') типы столбцов становятся объектами.

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2075259 entries, 2006-12-16 17:24:00 to 2010-11-26 21:02:00
Data columns (total 7 columns):
Global_active_power      object
Global_reactive_power    object
Voltage                  object
Global_intensity         object
Sub_metering_1           object
Sub_metering_2           object
Sub_metering_3           float64
dtypes: float64(1), object(6)
memory usage: 126.7+ MB

Может кто-нибудь сказать, пожалуйста, почему этоэто происходит?И как это решить?

Спасибо!

1 Ответ

0 голосов
/ 21 мая 2018

Я полагаю, что когда вы читаете полный набор данных, в дополнительных строках есть значения, которые интерпретируются как разные типы данных, например, числа с плавающей точкой, интерпретируемые как целые числа.Вы можете указать типы данных явно, используя аргумент dtype в read_csv - см. Документы здесь .

В качестве альтернативы вы можете попытаться форсировать типы данных после загрузки данных;например, вот так:

df["Global_active_power"] = df["Global_active_power"].astype(float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...