Укажите правильные типы данных с помощью pandas.read_csv

Я хотел бы загрузить файл csv в Pandas DataFrame. Как мне для каждого столбца указать, какой тип данных он содержит?

Я думаю, это легко сделать, используя аргумент dtype?

Вот пример, указывающий данные числовые.

import pandas as pd
import numpy as np
df = pd.read_csv(<file-name>, dtype={'A': np.int64, 'B': np.float64})

Но как указать данные время и категориальные данные, такие как факторы или логические значения? Я пробовал np.bool_ и pd.tslib.Timestamp без везения.

Ответы

Ответ 1

Существует множество опций для read_csv, которые будут обрабатывать все упомянутые вами случаи. Возможно, вы захотите попробовать dtype = {'A': datetime.datetime}, но часто вам не нужны dtypes, поскольку pandas может вывести типы. Но если у вас есть даты, вам нужно указать параметры parse_date.

parse_dates : boolean, list of ints or names, list of lists, or dict
keep_date_col : boolean, default False
date_parser : function

В общем случае для преобразования логических значений вам необходимо указать:

true_values : list    Values to consider as True
false_values : list Values to consider as False

Что преобразует любое значение в список в логическое значение true/false. Для более общих преобразований вам, скорее всего, понадобится

Преобразователи

: dict. необязательный Dict функций для преобразования значений в определенные столбцы. Ключи могут быть целыми или столбцами

Хотя и плотный, здесь полный список: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html