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')