web-dev-qa-db-fra.com

Est-il possible de lire des colonnes catégorielles avec read_csv des pandas?

J'ai essayé de passer le paramètre dtype avec read_csv comme dtype={n: pandas.Categorical} mais cela ne fonctionne pas correctement (le résultat est un objet). Le manuel n'est pas clair .

34
Emre

Dans la version 0.19.0 vous pouvez utiliser le paramètre dtype='category' dans read_csv:

data = 'col1,col2,col3\na,b,1\na,b,2\nc,d,3'
df = pd.read_csv(pd.compat.StringIO(data), dtype='category')
print (df)
  col1 col2 col3
0    a    b    1
1    a    b    2
2    c    d    3

print (df.dtypes)
col1    category
col2    category
col3    category
dtype: object

Si vous souhaitez spécifier une colonne pour la catégorie, utilisez dtype avec le dictionnaire:

df = pd.read_csv(pd.compat.StringIO(data), dtype={'col1':'category'})
print (df)
  col1 col2  col3
0    a    b     1
1    a    b     2
2    c    d     3

print (df.dtypes)
col1    category
col2      object
col3       int64
dtype: object
40
jezrael

Le catégorique n'est pas valide dtype .

Cette publication StackOverflow contient des détails sur la façon de stocker des données catégorielles dans un fichier texte.

3
Alexander