CodeGym /Cursos /Python SELF ES /Unión de datos desde múltiples hojas y archivos Excel

Unión de datos desde múltiples hojas y archivos Excel

Python SELF ES
Nivel 28 , Lección 1
Disponible

1. ¿Por qué unir datos?

En el mundo moderno de los datos, es bastante raro encontrar toda la información necesaria en un único archivo. Más a menudo, los datos están dispersos en varias tablas y archivos, y para un análisis completo, necesitamos unirlos. Por ejemplo, podrías tener datos de ventas para cada mes en archivos separados. Para analizar las tendencias generales, necesitas combinar estos datos en una única tabla.

Además, unir datos ayuda a:

  • Ahorra tiempo en la creación manual de reportes.
  • Reducir el número de errores asociados con la transferencia manual de datos.
  • Automatizar el flujo de trabajo de análisis de datos.

2. Métodos para unir datos

Concatenación de datos

La unión vertical y horizontal de datos se llama concatenación. Vamos a empezar con un ejemplo simple: tenemos dos DataFrame que queremos unir.

Python

import pandas as pd

# Creamos dos DataFrame con estructuras similares
data1 = {
    'Product': ['Apples', 'Bananas'],
    'Sales': [100, 150]
}

data2 = {
    'Product': ['Cherries', 'Dates'],
    'Sales': [75, 200]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Concatenación vertical (añadimos filas)
combined = pd.concat([df1, df2], ignore_index=True)
print(combined)

Como resultado, obtendremos un DataFrame combinado con todas las filas de ambas fuentes. Nota el parámetro ignore_index=True, que restablece los índices en el DataFrame final.

Unión de datos usando el método merge

Cuando tienes datos que necesitas unir basándote en columnas comunes (como id o Product), el método merge es perfecto. Es como una cita para tus datos: necesitan tener algo en común para coincidir.

Python

# Creamos un ejemplo de datos
sales_data = {
    'Product': ['Apples', 'Bananas', 'Cherries'],
    'Sales': [100, 150, 75]
}

price_data = {
    'Product': ['Apples', 'Bananas', 'Dates'],
    'Price': [1.2, 0.8, 3.0]
}

sales_df = pd.DataFrame(sales_data)
price_df = pd.DataFrame(price_data)

# Unimos los DataFrame por la columna 'Product'
merged_df = pd.merge(sales_df, price_df, on='Product', how='inner')
print(merged_df)

Aunque tenemos información de cada producto, merge devuelve solo aquellas filas donde hay coincidencias en la columna clave Product.

Tipos de uniones:

  • inner (por defecto): devuelve solo aquellas filas presentes en ambos DataFrame.
  • outer: devuelve todas las filas, rellenando los valores ausentes con NaN.
  • left: devuelve todas las filas del DataFrame izquierdo y las correspondientes del derecho.
  • right: devuelve todas las filas del DataFrame derecho y las correspondientes del izquierdo.

Unión de datos desde múltiples hojas

Ahora que hemos repasado cómo funciona la unión en pandas, pongámoslo en práctica combinando datos desde múltiples hojas de un archivo Excel.

Python

# Leemos un archivo Excel con múltiples hojas
excel_file = pd.ExcelFile('sales_data.xlsx')

# Lista de los nombres de todas las hojas
sheet_names = excel_file.sheet_names

# Leemos los datos de cada hoja en un DataFrame separado y los colocamos en una lista
dataframes = [pd.read_excel(excel_file, sheet_name=sheet_name) for sheet_name in sheet_names]

# Realizamos la concatenación vertical de todos los DataFrame
all_sales_data = pd.concat(dataframes, ignore_index=True)

print(all_sales_data)

Aquí leemos todas las hojas del archivo Excel en DataFrame separados y luego los combinamos en uno. ¡Poderoso, verdad?

Unión de datos desde múltiples archivos

En la práctica, podrías encontrarte con situaciones donde los datos están distribuidos en múltiples archivos. Veamos cómo automatizar el proceso de combinarlos.

Python

import glob

# Ruta a los archivos
file_path = r'data/sales_*.xlsx'

# Obtenemos una lista de todos los archivos que coinciden con el patrón
files = glob.glob(file_path)

# Leemos los datos de cada archivo en un DataFrame separado y los colocamos en una lista
dataframes = [pd.read_excel(file) for file in files]

# Realizamos la concatenación vertical de todos los DataFrame
all_files_data = pd.concat(dataframes, ignore_index=True)

print(all_files_data)

Usamos la librería glob para obtener una lista de archivos que coinciden con el patrón especificado, y luego combinamos los datos de cada archivo en un DataFrame.

3. Ejemplos reales de uso

Unión de datos para análisis de negocios

Supongamos que eres un analista trabajando con datos de ventas por cada mes en archivos separados. Con las técnicas mencionadas, puedes unir fácilmente los datos para analizar tendencias anuales y sacar conclusiones relevantes.

Automatización de reportes

Gracias a la automatización en la unión de datos, puedes configurar un script que recopile información de diversas fuentes y genere reportes diarios, semanales o mensuales automáticamente.

Procesamiento de datos desde diferentes fuentes

Tus datos pueden provenir de diferentes sistemas, donde cada fuente proporciona una parte de la información. Usando pandas, puedes unirlos para obtener una visión completa, por ejemplo, combinando datos de clientes con sus compras.

4. Errores típicos y cómo solucionarlos

Un error común es la discrepancia en los nombres de las columnas en los DataFrame que estás combinando. Asegúrate de que las columnas por las que unes los datos sean realmente las mismas y, en caso necesario, usa los parámetros left_on y right_on en el método merge.

A veces, los datos pueden contener valores ausentes después de la unión. Usa los métodos de rellenado fillna o eliminación dropna, para manejar este problema.

Si tus datos contienen duplicados, el método concat puede generar un DataFrame más largo de lo que esperabas. En este caso, usa el método drop_duplicates para limpiar.

Ahora que hemos cubierto los métodos y técnicas de unión de datos en pandas, tienes las herramientas para manejar tareas reales de automatización y análisis de datos. ¡Usa este conocimiento a tu favor!

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION