web-dev-qa-db-fra.com

Spécifiez les dtypes corrects à pandas.read_csv pour les heures et les booléens

Je charge un fichier csv dans un Pandas DataFrame. Pour chaque colonne, comment spécifier le type de données qu'il contient à l'aide de l'argument dtype?

  • Je peux le faire avec numérique données (code en bas) ...
  • Mais comment puis-je spécifier time data ...
  • et catégorique des données telles que des facteurs ou des booléens? J'ai essayé np.bool_ et pd.tslib.Timestamp sans chance.

Code:

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

Il existe de nombreuses options pour read_csv qui traiteront tous les cas que vous avez mentionnés. Vous voudrez peut-être essayer dtype = {'A': datetime.datetime}, mais souvent vous n'aurez pas besoin de dtypes car pandas peut inférer les types.

Pour les dates, vous devez alors spécifier les options parse_date :

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

En général, pour convertir des valeurs booléennes, vous devrez spécifier:

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

Ce qui transformera n'importe quelle valeur de la liste en booléen true/false. Pour des conversions plus générales, vous aurez probablement besoin

convertisseurs: dict. Dict facultatif de fonctions pour convertir des valeurs dans certaines colonnes. Les clés peuvent être des entiers ou des étiquettes de colonne

Bien que dense, consultez ici pour la liste complète: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html

12
Paul