Volver al curso

Python para Data Science

leccion
11 / 14
beginner
12 horas
Pandas: Manipulacion de Datos

Combinando DataFrames

Lectura
12 min~1 min lectura

Uniendo datos

Concat: Apilar DataFrames

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

# Apilar verticalmente (filas)
pd.concat([df1, df2])
#    A  B
# 0  1  3
# 1  2  4
# 0  5  7
# 1  6  8

# Resetear indice
pd.concat([df1, df2], ignore_index=True)

# Apilar horizontalmente (columnas)
pd.concat([df1, df2], axis=1)

Merge: JOIN como SQL

# DataFrames de ejemplo
clientes = pd.DataFrame({
    'id': [1, 2, 3],
    'nombre': ['Ana', 'Luis', 'Maria']
})
pedidos = pd.DataFrame({
    'cliente_id': [1, 1, 2, 4],
    'producto': ['A', 'B', 'C', 'D']
})

# Inner join (solo coincidencias)
pd.merge(clientes, pedidos, left_on='id', right_on='cliente_id')

# Left join (todos los de la izquierda)
pd.merge(clientes, pedidos, left_on='id', right_on='cliente_id', how='left')

# Right join
pd.merge(clientes, pedidos, left_on='id', right_on='cliente_id', how='right')

# Outer join (todos)
pd.merge(clientes, pedidos, left_on='id', right_on='cliente_id', how='outer')

# Mismo nombre de columna
pd.merge(df1, df2, on='id')

Join: Por indice

df1 = pd.DataFrame({'A': [1, 2]}, index=['a', 'b'])
df2 = pd.DataFrame({'B': [3, 4]}, index=['a', 'b'])

df1.join(df2)
#    A  B
# a  1  3
# b  2  4

Guardando datos

# CSV
df.to_csv('resultado.csv', index=False)

# Excel
df.to_excel('resultado.xlsx', index=False)

# JSON
df.to_json('resultado.json', orient='records')

# Parquet (eficiente)
df.to_parquet('resultado.parquet')