Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Merge y Concat

20/24
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Aquí los diccionarios:

CONCAT

	df1 = pd.DataFrame({'A':['A0', 'A1', 'A2','A3'],
	'B':['B0', 'B1', 'B2','B3'],
	'C':['C0', 'C1', 'C2','C3'],
	'D':['D0', 'D1', 'D2','D3']})


	df2 = pd.DataFrame({'A':['A4', 'A5', 'A6','A7'],
	'B':['B4', 'B5', 'B6','B7'],
	'C':['C4', 'C5', 'C6','C7'],
	'D':['D4', 'D5', 'D6','D7']})

MERGE 1

izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})

MERGE 2

izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key_2' : ['k0', 'k1', 'k2','k3'],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})

MERGE 3

izq = pd.DataFrame({'key' : ['k0', 'k1', 'k2','k3'],
 'A' : ['A0', 'A1', 'A2','A3'],
'B': ['B0', 'B1', 'B2','B3']})

der = pd.DataFrame({'key_2' : ['k0', 'k1', 'k2',np.nan],
 'C' : ['C0', 'C1', 'C2','C3'],
'D': ['D0', 'D1', 'D2','D3']})

Si usas el comando outer te va votar 4 registros,ya que, estarán contenidos los registros del left ,del right y del inner.

A estás alturas del curso puedo decir que está mil veces mejor que el anterior curso sobre pandas, demasiado bueno el profesor.

El CONCATENATE se puede usar con dataframe que pueden tener diferencias en alguna columna.
Del dataframe de los libros hacemos 2 dataframe con columnas distintas y los concatenamos

df_books = pd.read_csv('/content/VIDEO 12 bestsellers-with-categories.csv',sep=',',header=0)
df_books.head(2)


Con las primeros registros

df_books_1=df_books[['Name','Author','Price','Year']].head(5)
df_books_1

Con los últimos registros y además tiene la columna GENRE

df_books_2=df_books[['Name','Author','Price','Year','Genre']].tail(5)
df_books_2


Concatenamos en sentido axis = 0. Los valores faltantes son NULL

df_books_concat = pd.concat([df_books_1,df_books_2],ignore_index=True)
df_books_concat


A los valores nulos le asignamos Unrated (sin clasificación) que es más descriptivo.
Para eso usamos where y la concatenación en sentido de las columnas (axis=1).

df_genre = df_books_concat.Genre.where(df_books_concat.Genre.notnull() ,'Unrated')
df_books_concat2 = pd.concat([df_books_concat[['Name','Author','Price','Year']],df_genre],axis=1)

Aporte para crear los diccionarios usados en la clase. Es un método mucho más complejo que simplemente copiar, pegar y modificar.

Sin embargo, lo aporto como ejemplo del uso de list y dictionary comprehensions en python nivel intermedio.

# genera lista con keys: 'A', 'B', 'C', 'D'
keys = list('ABCD')  

# values será un list comprehension que contendrá una lista de listas:
# ['A0', 'A1', ..., 'A3'], ['B0', 'B1', ..., 'B3'], ...
# es un list comprehension anidado
values = [ 
            # list comprehension anidado
            # crea una lista del tipo: ['A0', 'A1', ..., 'A3']
            [f'{letter}{number}' for number in range(4)]    
         # para las letras A, B, C, D, E, F
         for letter in list('ABCDEF')
         ]

df3 = pd.DataFrame(
    # dictionary comprehension:
    # uso zip para crear tuplas de dos elementos que suministren
    # pares de valores k:v al diccionario
    {k:v for k,v  in zip(keys, values)}
)

Otra gran herramienta para salir adelante en las pruebas técnicas.

Muy buena clase, tenía dudas sobre .merge() y con esta clase se aclararon.