Pandas: Lectura de Datos Externos

PandasBeginner
Practicar Ahora

Introducción

En el análisis de datos, el primer paso suele ser cargar los datos en un formato estructurado. Pandas, una potente biblioteca de Python, destaca en esta tarea. La función más común para leer datos de archivos planos como los CSV es pandas.read_csv(). Esta función es increíblemente flexible y ofrece una amplia gama de parámetros para manejar diferentes formatos de archivo y posibles problemas.

En este laboratorio, aprenderá a utilizar pd.read_csv() para importar datos de un archivo CSV a un DataFrame de Pandas. Cubriremos cómo manejar comentarios, especificar encabezados, gestionar valores faltantes y realizar inspecciones iniciales de los datos cargados.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 95%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Leer archivo CSV usando read_csv

En este paso, aprenderá el uso básico de la función pd.read_csv() para cargar datos de un archivo CSV en un DataFrame de Pandas.

Nuestro directorio de proyecto, ~/project, contiene un archivo llamado data.csv. Examinemos su contenido. Incluye algunas líneas de comentario al principio, que comienzan con el símbolo #. La función read_csv puede configurarse para ignorar estas líneas utilizando el parámetro comment.

Primero, abra el archivo main.py desde el explorador de archivos de la izquierda. Escribiremos nuestro código Python en este archivo.

Agregue el siguiente código a main.py para importar Pandas y leer el archivo data.csv. Asignaremos el DataFrame resultante a una variable llamada df y luego la imprimiremos.

import pandas as pd

## Lee el archivo CSV, tratando las líneas que comienzan con '#' como comentarios
df = pd.read_csv('data.csv', comment='#')

## Imprime el DataFrame
print(df)

Ahora, para ejecutar el script, abra una terminal en el WebIDE (puede usar el menú Terminal > New Terminal) y ejecute el siguiente comando:

python3 main.py

Debería ver la siguiente salida, que muestra el contenido del archivo CSV cargado en un DataFrame estructurado.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

Especificar fila de encabezado en read_csv

En este paso, exploraremos el parámetro header de la función read_csv.

Por defecto, read_csv asume que la primera fila no comentada y no omitida en su archivo es la fila de encabezado que contiene los nombres de las columnas. En nuestro archivo data.csv, después de omitir las líneas de comentario, la línea id,name,age,city se infiere correctamente como el encabezado.

El parámetro header le permite especificar explícitamente qué fila usar como encabezado. Toma un entero que representa el índice de la fila (comenzando desde 0). Dado que la primera línea de datos (después de los comentarios) es nuestro encabezado, su índice es 0.

Modifiquemos el archivo main.py para establecer explícitamente header=0. Aunque este es el comportamiento predeterminado en nuestro caso, ser explícito puede prevenir errores con archivos con formato inusual.

Actualice su main.py con el siguiente código:

import pandas as pd

## Especifica explícitamente que la primera fila (índice 0) después de los comentarios es el encabezado
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

Ejecute el script nuevamente desde la terminal:

python3 main.py

La salida será idéntica al paso anterior, ya que solo hemos confirmado el comportamiento predeterminado. Esta práctica es útil para la claridad y robustez del código.

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

Manejar valores faltantes con el parámetro na_values

En este paso, aprenderá cómo manejar representaciones personalizadas de datos faltantes.

Si observa el DataFrame del paso anterior, verá los valores "Not Available" en la columna age y NaN en la columna city. Pandas reconoce automáticamente algunos indicadores comunes de valores faltantes como cadenas vacías, NA o N/A, pero no los personalizados como "Not Available". Podemos usar el parámetro na_values para proporcionar una lista de cadenas que deben interpretarse como NaN (Not a Number), que es el marcador estándar de Pandas para datos faltantes.

Modifique su main.py para incluir el parámetro na_values.

import pandas as pd

## Define una lista de cadenas que se tratarán como valores faltantes
missing_values = ["Not Available", "N/A"]

## Lee el CSV, especificando los valores faltantes personalizados
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

Ahora, ejecute el script:

python3 main.py

Observe la nueva salida. La cadena "Not Available" ha sido reemplazada por NaN.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

Observe que el tipo de datos de la columna age también ha cambiado a float64 para acomodar el valor NaN.

Mostrar las primeras filas usando el método head

En este paso, aprenderemos a inspeccionar las primeras filas de un DataFrame.

Cuando se trabaja con grandes conjuntos de datos, imprimir el DataFrame completo es ineficiente y puede saturar la pantalla. El método .head() es una forma conveniente de obtener una vista previa rápida de sus datos. Por defecto, devuelve las primeras 5 filas.

También puede pasar un entero a .head() para especificar el número de filas que desea ver. Mostremos solo las primeras 3 filas de nuestro DataFrame.

Actualice su archivo main.py de la siguiente manera. En lugar de imprimir todo el DataFrame, ahora imprimiremos solo su encabezado (head).

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Muestra las primeras 3 filas del DataFrame
print(df.head(3))

Ejecute el script desde su terminal:

python3 main.py

La salida ahora será mucho más corta, mostrando solo el encabezado y los tres primeros registros.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

Comprobar la forma del DataFrame usando el atributo shape

En este paso, aprenderá a comprobar las dimensiones de su DataFrame.

Conocer el número de filas y columnas es una comprobación fundamental en el análisis de datos. Los DataFrames de Pandas tienen un atributo .shape que devuelve una tupla que contiene el número de filas y columnas.

Tenga en cuenta que .shape es un atributo, no un método, por lo que no se utilizan paréntesis () al acceder a él.

Modifiquemos main.py para imprimir la forma (shape) de nuestro DataFrame.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Obtener las dimensiones (filas, columnas) del DataFrame
df_shape = df.shape

print(df_shape)

Ejecute el script una última vez:

python3 main.py

La salida será una tupla que indica que nuestro DataFrame tiene 5 filas y 4 columnas.

(5, 4)

Resumen

¡Felicitaciones por completar este laboratorio! Ha aprendido las habilidades esenciales para leer e inspeccionar datos utilizando Pandas.

En este laboratorio, ha dominado:

  • Leer un archivo CSV en un DataFrame usando pd.read_csv().
  • Omitir líneas de comentarios con el parámetro comment.
  • Definir explícitamente la fila de encabezado con el parámetro header.
  • Manejar valores faltantes personalizados usando el parámetro na_values.
  • Previsualizar un DataFrame con el método .head().
  • Comprobar las dimensiones de un DataFrame con el atributo .shape.

Estas son operaciones fundamentales que forman el punto de partida para casi todas las tareas de análisis de datos. Con estas habilidades, ahora está mejor equipado para manejar una variedad de desafíos de importación de datos.