Estoy tratando de obtener todos los tipos de datos de un archivo CSV para cada columna.
No hay documentación sobre los tipos de datos en un archivo y la verificación manual llevará mucho tiempo (tiene 150 columnas).

Comenzó a usar este enfoque:

df = pd.read_csv('/tmp/file.csv')

>>> df.dtypes
a   int64
b   int64
c   object
d   float64

¿El enfoque anterior es lo suficientemente bueno o hay un mejor enfoque para descubrir los tipos de datos?
Además, el archivo tiene 150 columnas. Cuando escribo df.types, solo puedo ver aproximadamente 15 columnas. ¿Cómo verlos a todos?

3
Joe 17 sep. 2018 a las 17:02

4 respuestas

La mejor respuesta

Dependiendo del tamaño de su archivo, puede ahorrar algo de tiempo leyendo solo en las primeras filas, utilizando el argumento nrows de pd.read_csv:

df = pd.read_csv('/tmp/file.csv', nrows=25)

Sin embargo, esto solo es útil si sabe con certeza que los tipos se pueden inferir correctamente de las primeras n filas, así que tenga cuidado con esto.

Una vez que tenga los datos (o un subconjunto de ellos) cargados en un DataFrame, puede ver los tipos de varias maneras diferentes, algunas de las cuales ya se han publicado, pero compartiré otra utilizando un bucle simple y < a href = "https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.Series.iteritems.html" rel = "nofollow noreferrer"> iteritems :

for name, dtype in df.dtypes.iteritems():
    print(name, dtype)

a int64
b float64
c object
3
thesilkworm 17 sep. 2018 a las 14:18

Hay algunas formas de hacerlo. Me gusta usar

df.dtypes

O

for i, v in enumerate(df.columns):
    print(i, v)
0
Pedro Henrique 2 abr. 2019 a las 22:24

Puede actualizar la opción de visualización max_info_columns y usar DataFrame.info()

pd.set_option('max_info_columns', 200)
df.info()
0
Chris A 17 sep. 2018 a las 14:13

Creo que esta es una buena manera de hacerlo. Devuelve un objeto Serie. Para ver más filas puedes usar esta: pd.set_option('display.max_rows', 250)

0
Anna Semjén 17 sep. 2018 a las 14:12