Cómo combinar múltiples archivos CSV de manera eficiente usando Python

La tarea de combinar múltiples archivos CSV en uno solo es común en el análisis de datos y el procesamiento estadístico. Si se realiza manualmente, este proceso puede llevar mucho tiempo y ser propenso a errores. Usando la biblioteca pandas de Python, podemos realizar esta tarea de manera eficiente y precisa. En este artículo, explicaremos en detalle cómo combinar múltiples archivos CSV utilizando Python.

Índice

Bibliotecas necesarias y cómo instalarlas

Para combinar múltiples archivos CSV en Python, se necesita la biblioteca pandas. Pandas es una herramienta poderosa que ofrece excelentes funciones para la manipulación y análisis de datos. En esta sección, describimos cómo instalar pandas.

Instalación de pandas

Para instalar pandas, usamos el siguiente comando. Este se ejecuta utilizando pip, el sistema de gestión de paquetes de Python.

pip install pandas

Otras bibliotecas necesarias

Además de pandas, la biblioteca numpy es útil para trabajar con archivos CSV. Numpy es una biblioteca para cálculos numéricos y, a menudo, se usa junto con pandas. La instalación de numpy también se puede realizar con pip usando el siguiente comando.

pip install numpy

Con esto, ya tenemos todo preparado para combinar archivos CSV de manera eficiente. En la siguiente sección, explicaremos cómo preparar los datos.

Preparación de los datos

Antes de combinar los archivos CSV, es importante entender qué tipo de datos estamos manejando. En esta sección, explicamos los archivos CSV de ejemplo y su estructura de datos.

Archivos CSV de ejemplo

Aquí mostramos un ejemplo usando dos archivos CSV. Vamos a combinar los archivos “sales_january.csv” y “sales_february.csv”.

sales_january.csv

Date,Product,Sales
2024-01-01,Product A,100
2024-01-02,Product B,150
2024-01-03,Product A,200

sales_february.csv

Date,Product,Sales
2024-02-01,Product A,120
2024-02-02,Product C,160
2024-02-03,Product B,180

Verificación de la estructura de datos

Estos archivos tienen tres columnas: fecha, nombre del producto y ventas. Es importante comprender esta estructura al realizar la combinación. Cada archivo CSV contiene datos de ventas de productos en diferentes fechas.

En la siguiente sección, explicamos cómo leer estos archivos CSV usando la biblioteca pandas.

Lectura básica de archivos CSV con pandas

Usando pandas, podemos leer fácilmente archivos CSV. Esta sección describe cómo usar pandas para leer archivos CSV de manera básica.

Importación de pandas

Primero, importamos la biblioteca pandas. Normalmente, pandas se importa con el alias “pd”.

import pandas as pd

Lectura de archivos CSV

Luego, usamos la función read_csv para leer los archivos CSV. Esta función carga los datos directamente en un DataFrame de pandas al especificar la ruta del archivo.

# Leer datos de ventas de enero
january_sales = pd.read_csv('sales_january.csv')

# Leer datos de ventas de febrero
february_sales = pd.read_csv('sales_february.csv')

Verificación de los datos

Para verificar los datos leídos, podemos usar el método head, que muestra las primeras filas del DataFrame.

print(january_sales.head())
print(february_sales.head())

Al ejecutar este código, se muestran las primeras filas de cada DataFrame, lo que nos permite verificar que los datos se han leído correctamente.

En la siguiente sección, veremos cómo leer múltiples archivos CSV a la vez y almacenarlos en una lista.

Lectura de múltiples archivos CSV y almacenamiento en una lista

Para leer y procesar múltiples archivos CSV a la vez, primero los almacenamos en una lista. Esto facilita la gestión de varios archivos.

Creación de una lista con las rutas de los archivos

Primero, recopilamos las rutas de los archivos CSV que vamos a leer en una lista. Esto prepara el procesamiento de varios archivos a la vez.

# Guardar las rutas de los archivos CSV en una lista
csv_files = ['sales_january.csv', 'sales_february.csv']

Lectura de los archivos CSV y almacenamiento en una lista

A continuación, leemos cada archivo CSV y lo almacenamos en una lista de DataFrames. Usamos un bucle para procesar cada archivo secuencialmente.

# Crear una lista para almacenar los DataFrames
data_frames = []

# Leer cada archivo CSV y agregarlo a la lista
for file in csv_files:
    df = pd.read_csv(file)
    data_frames.append(df)

Verificación de los datos

Podemos acceder a cada DataFrame de la lista y verificar su contenido.

for df in data_frames:
    print(df.head())

Usando este método, podemos leer y almacenar múltiples archivos CSV de manera eficiente. En la siguiente sección, veremos cómo combinar estos archivos CSV usando pandas.

Cómo combinar archivos CSV

Después de leer los archivos CSV, el siguiente paso es combinarlos en un solo DataFrame. En esta sección, veremos cómo combinar múltiples archivos CSV usando pandas.

Concatenación de datos

Usamos la función concat de pandas para concatenar múltiples DataFrames verticalmente. Esto agrega las filas de cada DataFrame al resultado final.

# Concatenar múltiples DataFrames verticalmente
merged_data = pd.concat(data_frames, ignore_index=True)

Explicación del código

  • data_frames: Es la lista de DataFrames que hemos creado previamente.
  • ignore_index=True: Ignora los índices originales y crea nuevos índices continuos.

Verificación de los datos combinados

Verificamos los datos combinados para asegurarnos de que la operación de fusión haya sido exitosa.

print(merged_data.head())
print(merged_data.tail())

Guardar los datos combinados

Para guardar los datos combinados en un nuevo archivo CSV, usamos la función to_csv.

# Guardar los datos combinados en un archivo CSV
merged_data.to_csv('merged_sales.csv', index=False)

Explicación del código

  • 'merged_sales.csv': Es el nombre del archivo donde se guardarán los datos.
  • index=False: Esto indica que no se debe incluir la columna de índice en el archivo CSV.

Al seguir estos pasos, podemos combinar múltiples archivos CSV en un solo DataFrame y guardarlo como un nuevo archivo CSV. En la siguiente sección, veremos cómo combinar archivos CSV usando una clave común.

Combinación basada en una clave

Cuando combinamos múltiples archivos CSV, a menudo lo hacemos basándonos en una clave común. En esta sección, veremos cómo combinar archivos CSV basados en una clave común usando pandas.

Datos de ejemplo para la combinación

Aquí usamos dos archivos CSV y combinamos los datos basándonos en la columna Product.

products.csv

Product,Category
Product A,Electronics
Product B,Household
Product C,Clothing

sales.csv

Date,Product,Sales
2024-01-01,Product A,100
2024-01-02,Product B,150
2024-01-03,Product A,200
2024-02-01,Product A,120
2024-02-02,Product C,160
2024-02-03,Product B,180

Lectura de los archivos CSV

Primero, leemos los archivos CSV utilizando pandas.

# Leer los archivos CSV
products = pd.read_csv('products.csv')
sales = pd.read_csv('sales.csv')

Combinación de los datos

A continuación, usamos la función merge para combinar los datos basándonos en la columna común Product.

# Combinar los datos
merged_data = pd.merge(sales, products, on='Product')

Explicación del código

  • sales: DataFrame con los datos de ventas.
  • products: DataFrame con los datos de productos.
  • on='Product': Combina los DataFrames basándose en la columna Product.

Verificación de los datos combinados

Verificamos los datos combinados para asegurarnos de que la combinación ha sido exitosa.

print(merged_data.head())

Guardar los datos combinados

Guardamos los datos combinados en un nuevo archivo CSV.

# Guardar los datos combinados en un archivo CSV
merged_data.to_csv('merged_sales_with_categories.csv', index=False)

Con este método, podemos combinar fácilmente archivos CSV basados en una clave común. En la siguiente sección, explicamos cómo verificar y guardar los datos después de la combinación.

Verificación y guardado de los datos combinados

Después de combinar múltiples archivos CSV, es necesario verificar que los datos se hayan combinado correctamente y, si es necesario, realizar una limpieza. En esta sección, explicamos cómo verificar los datos combinados y guardarlos en un archivo CSV.

Verificación de los datos combinados

Para verificar que los datos se han combinado correctamente, mostramos las primeras y últimas filas de los datos. También podemos mostrar estadísticas descriptivas básicas para obtener una visión general de los datos.

# Mostrar las primeras filas de los datos
print(merged_data.head())

# Mostrar las últimas filas de los datos
print(merged_data.tail())

# Mostrar estadísticas descriptivas
print(merged_data.describe())

Explicación del código

  • head(): Muestra las primeras filas del DataFrame.
  • tail(): Muestra las últimas filas del DataFrame.
  • describe(): Muestra estadísticas descriptivas de los datos (media, desviación estándar, mínimo, máximo, etc.).

Limpieza de los datos

Si los datos no se han combinado correctamente o si existen valores faltantes, es necesario limpiar los datos. En el siguiente ejemplo, verificamos y tratamos los valores faltantes.

# Verificación de valores faltantes
print(merged_data.isnull().sum())

# Eliminar valores faltantes
cleaned_data = merged_data.dropna()

# O reemplazar valores faltantes por un valor específico
# cleaned_data = merged_data.fillna({'Sales': 0})

Explicación del código

  • isnull().sum(): Verifica la cantidad de valores faltantes por columna.
  • dropna(): Elimina las filas que contienen valores faltantes.
  • fillna(): Reemplaza los valores faltantes por un valor especificado.

Guardar los datos

Después de limpiar los datos, guardamos el DataFrame en un nuevo archivo CSV.

# Guardar los datos limpios en un archivo CSV
cleaned_data.to_csv('cleaned_merged_sales.csv', index=False)

Explicación del código

  • 'cleaned_merged_sales.csv': Es el nombre del archivo donde se guardarán los datos limpios.
  • index=False: Esto indica que no se debe incluir la columna de índice en el archivo CSV.

Al seguir estos pasos, podemos verificar, limpiar y guardar los datos combinados en un nuevo archivo CSV. En la siguiente sección, exploramos cómo combinar archivos CSV con diferentes estructuras de datos.

Ejemplo avanzado: Combinar archivos CSV con diferentes estructuras de datos

Cuando combinamos archivos CSV con diferentes estructuras de datos, debemos tener en cuenta varios factores. En esta sección, describimos cómo combinar archivos CSV con estructuras de datos diferentes y qué precauciones debemos tomar.

Datos de ejemplo

En este caso, usamos dos archivos CSV con diferentes estructuras de datos.

sales.csv

Date,Product,Sales
2024-01-01,Product A,100
2024-01-02,Product B,150
2024-01-03,Product A,200

inventory.csv

Product,Stock,Warehouse
Product A,50,Warehouse 1
Product B,30,Warehouse 2
Product C,20,Warehouse 1

Combinación basada en una clave común

Cuando combinamos archivos CSV con diferentes estructuras, lo hacemos utilizando una clave común. En este caso, usamos la columna Product como clave.

# Leer los archivos CSV
sales = pd.read_csv('sales.csv')
inventory = pd.read_csv('inventory.csv')

# Combinar los datos
merged_data = pd.merge(sales, inventory, on='Product', how='left')

Explicación del código

  • how='left': Indica una combinación externa izquierda, lo que significa que se conservan todas las filas de sales y solo las filas coincidentes de inventory se agregan.

Manejo de valores faltantes

Al combinar archivos CSV con diferentes estructuras, es posible que aparezcan valores faltantes. Es importante manejarlos adecuadamente.

# Verificar valores faltantes
print(merged_data.isnull().sum())

# Eliminar valores faltantes
cleaned_data = merged_data.dropna()

# O reemplazar valores faltantes por valores específicos
# cleaned_data = merged_data.fillna({'Stock': 0, 'Warehouse': 'Unknown'})

Explicación del código

  • dropna(): Elimina las filas con valores faltantes.
  • fillna(): Reemplaza los valores faltantes por un valor específico.

Guardar los datos

Finalmente, guardamos los datos combinados y limpiados en un nuevo archivo CSV.

# Guardar los datos combinados en un archivo CSV
cleaned_data.to_csv('merged_sales_inventory.csv', index=False)

Explicación del código

  • 'merged_sales_inventory.csv': Nombre del archivo donde se guardarán los datos.
  • index=False: Indica que no se debe incluir la columna de índice en el archivo CSV.

Este método nos permite combinar eficientemente archivos CSV con diferentes estructuras de datos y crear un conjunto de datos consolidado. En la siguiente sección, proporcionamos ejercicios prácticos para poner en práctica lo aprendido.

Ejercicios prácticos

En esta sección, proporcionamos ejercicios prácticos para repasar todo lo aprendido en el artículo. Al abordar estos problemas, podrás practicar la lectura, combinación, limpieza y guardado de archivos CSV.

Ejercicio 1: Lectura y combinación básica de CSV

Lee los siguientes dos archivos CSV y combínalos usando pandas.

products.csv

Product,Price
Product A,100
Product B,150
Product C,200

sales.csv

Date,Product,Sales
2024-01-01,Product A,10
2024-01-02,Product B,15
2024-01-03,Product C,20

Instrucciones:

  1. Lee los archivos CSV.
  2. Combina los datos usando la columna Product como clave.
  3. Verifica los datos combinados.
  4. Guarda los datos combinados en un nuevo archivo CSV.

Ejercicio 2: Combinación de archivos CSV con diferentes estructuras

Lee los siguientes dos archivos CSV y combínalos adecuadamente, teniendo en cuenta sus diferentes estructuras.

customers.csv

CustomerID,Name,Location
1,John Doe,New York
2,Jane Smith,Los Angeles
3,Emily Davis,Chicago

orders.csv

OrderID,CustomerID,Product,Quantity
1001,1,Product A,1
1002,2,Product B,2
1003,1,Product C,1
1004,3,Product A,3

Instrucciones:

  1. Lee los archivos CSV.
  2. Combina los datos usando la columna CustomerID como clave.
  3. Si hay valores faltantes, manéjalos adecuadamente.
  4. Guarda los datos combinados en un nuevo archivo CSV.

Ejercicio 3: Limpieza de datos y guardado

Lee el siguiente archivo CSV, maneja los valores faltantes y guarda los datos limpios en un nuevo archivo CSV.

sales_data.csv

Date,Product,Sales
2024-01-01,Product A,100
2024-01-02,Product B,
2024-01-03,Product A,200
2024-02-01,Product A,120
2024-02-02,,160
2024-02-03,Product B,180

Instrucciones:

  1. Lee el archivo CSV.
  2. Verifica los valores faltantes.
  3. Maneja los valores faltantes (eliminarlos o reemplazarlos).
  4. Guarda los datos limpios en un nuevo archivo CSV.

Al trabajar en estos ejercicios, podrás practicar habilidades clave en el procesamiento de datos, como la lectura, combinación, limpieza y guardado de archivos CSV. En la siguiente sección, resumimos lo aprendido en este artículo.

Resumen

En este artículo, hemos explicado cómo combinar múltiples archivos CSV de manera eficiente usando Python. Aquí están los puntos clave:

Puntos clave

  1. Uso de la biblioteca pandas: pandas facilita la lectura, combinación y limpieza de archivos CSV.
  2. Lectura básica de archivos CSV: Usamos la función read_csv para cargar archivos CSV en un DataFrame de pandas.
  3. Almacenamiento de múltiples archivos CSV en una lista: Vimos cómo manejar múltiples archivos CSV a la vez almacenándolos en una lista.
  4. Combinación de datos: Aprendimos cómo usar las funciones concat y merge para combinar múltiples archivos CSV.
  5. Combinación basada en una clave: Explicamos cómo combinar archivos CSV basados en una clave común.
  6. Limpieza y guardado de datos: Mostramos cómo verificar, limpiar y guardar los datos combinados.
  7. Ejemplos prácticos y ejercicios: Proporcionamos ejemplos prácticos para combinar archivos con estructuras de datos diferentes.

Al utilizar estos conocimientos, podrás manejar eficientemente múltiples archivos CSV y llevar a cabo análisis y procesamiento de datos. Utiliza este artículo como guía para trabajar en tus propios proyectos de datos.

Índice