No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Combinando DataFrames

19/24
Recursos

Existen diferentes formas de fusionar dos DataFrames. Esto se hace a trav茅s de la l贸gica de combinaci贸n como se muestra a continuaci贸n:
Merge-join

  • Left join: Da prioridad al DataFrame de la izquierda. Trae siempre los datos de la izquierda y las filas en com煤n con el DataFrame de la derecha.
  • Right join: Da prioridad al DataFrame de la derecha. Trae siempre los datos de la derecha y las filas en com煤n con el DataFrame de la izquierda.
  • Inner join: Trae solamente aquellos datos que son com煤n en ambos DataFrame
  • Outer join: Trae los datos tanto del DataFrame de la izquierda como el de la derecha, incluyendo los datos que comparten ambos.
description

Contribuci贸n creada por: Edward Giraldo.

Aportes 20

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Combinando dataFrames

Existen diferentes formas de fusionar dos dataFrames. Esto se hace a traves de la l贸gica de combinaci贸n como se muestra a continuacion

  • Left join: da prioridad al dataFrame de la izquierda. Trae siempre los datos de la izquierda y las filas en comun con el dataFrame de la derecha.
  • Right join: da prioridad al dataFrame de la derecha. Trae siempre los datos de la derecha y las filas en comun con el dataFrame de la izquierda.
  • Inner join: Trae solamente aquellos datos que son com煤n en ambos dataFrame
  • Outer join: Trae los datos tanto del dataFrame de la izquierda como el de la derecha incluyendo los datos que comparten ambos.
  • Concat - Axis 0: permite combinar dos dataframes a nivel de filas. Crecimiento vertical
  • Concat - Axis 1: permite combinar dos dataframes a nivel de columnas. La organizacion por columnas no va a ser la misma para ambos dataFrames, por tanto, se crearan valores NaN para rellenar los espacios vacios. Crecimiento horizontal

Mis apuntes #20

Left join

  • Supongan que queremos una tabla como tab_1, pero agregando votos electorales a cualquier estado que tengamos disponible. Para esto, usamos left_join con tab_1 como el primer argumento. Especificamos qu茅 columna usar para que coincida con el argumento by.
left_join(tab_1, tab_2, by = "state")
#>        state population ev
#> 1    Alabama    4779736  9
#> 2     Alaska     710231  3
#> 3    Arizona    6392017 11
#> 4   Arkansas    2915918 NA
#> 5 California   37253956 55
#> 6   Colorado    5029196 NA

Right join

  • Si en lugar de una tabla con las mismas filas que la primera tabla, queremos una con las mismas filas que la segunda tabla, podemos usar right_join:
tab_1 %>% right_join(tab_2, by = "state")
#>         state population ev
#> 1     Alabama    4779736  9
#> 2      Alaska     710231  3
#> 3     Arizona    6392017 11
#> 4  California   37253956 55
#> 5 Connecticut         NA  7
#> 6    Delaware         NA  3

Inner join

  • Si queremos mantener solo las filas que tienen informaci贸n en ambas tablas, usamos inner_join. Pueden pensar en esto como una intersecci贸n:
inner_join(tab_1, tab_2, by = "state")
#>        state population ev
#> 1    Alabama    4779736  9
#> 2     Alaska     710231  3
#> 3    Arizona    6392017 11
#> 4 California   37253956 
55

Full join

  • Si queremos mantener todas las filas y llenar las partes faltantes con NAs, podemos usar full_join. Pueden pensar en esto como una uni贸n:
full_join(tab_1, tab_2, by = "state")
#>         state population ev
#> 1     Alabama    4779736  9
#> 2      Alaska     710231  3
#> 3     Arizona    6392017 11
#> 4    Arkansas    2915918 NA
#> 5  California   37253956 55
#> 6    Colorado    5029196 NA
#> 7 Connecticut         NA  7
#> 8    Delaware         NA  3

Semi join

  • La funci贸n semi_join nos permite mantener la parte de la primera tabla para la cual tenemos informaci贸n en la segunda. No agrega las columnas de la segunda:
semi_join(tab_1, tab_2, by = "state")
#>        state population
#> 1    Alabama    4779736
#> 2     Alaska     710231
#> 3    Arizona    6392017
#> 4 California   37253956

Recordemos los conceptos de clase:

Left join: Da prioridad al DataFrame de la izquierda. Trae siempre los datos de la izquierda y las filas en com煤n con el DataFrame de la derecha.
Right join: Da prioridad al DataFrame de la derecha. Trae siempre los datos de la derecha y las filas en com煤n con el DataFrame de la izquierda.
Inner join: Trae solamente aquellos datos que son com煤n en ambos DataFrame
Outer join: Trae los datos tanto del DataFrame de la izquierda como el de la derecha, incluyendo los datos que comparten ambos.

Muy buena explicaci贸n de los join visualizando el efecto en las tablas!

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Cuando combinamos 2 conjuntos de datos y utilizamos left join, esto quiere decir, que me traer谩 todos los datos que existan en el conjunto de la izquierda junto con la intersecci贸n entre los dos conjuntos

  • Cuando utilizamos rigth join, la prioridad est谩 en el conjunto de la derecha, es decir, nos traer谩 todos los datos del conjunto de la derecha y los que se encuentren en la intersecci贸n de los conjuntos

  • Cuando utilizamos inner join solamente traer谩 los datos que existan en ambos conjuntos de datos

  • Cuando utilizamos outer join nos va a traer todos los datos que existan en los conjuntos de datos

  • En pandas utilizamos la funci贸n concat para unir algunos DataFrame, es importante saber que con esta funci贸n debemos definir los Axis

  • Si utlizamos el Axis=0 fusionamos por filas, si utilizamos el Axis=1 la fusi贸n se realizar谩 por columnas

En este art铆culo se compara el INNER JOIN, LEFT JOIN, RIGHT JOIN y OUTER JOIN de SQL y PANDAS.
https://pandas.pydata.org/docs/getting_started/comparison/comparison_with_sql.html

Notece que en ambas tablas, solo se tiene una columna en com煤n, la cual ser铆a el 铆ndice.

Cuando se tienen m谩s de una fila con coincidencia, se complican un poco las cosas en mi experiencia.

Tu camiseta me trajo buenos recuerdos 馃ゲ

Me parece que el ejemplo del Inner Join est谩 mal, ya que solo trae los datos que tengan match, no deber铆a unir las columnas Ay B con Cy D, de hecho no se podr铆a hacer porque no tienen columnas en com煤n

Concat-columnas

Concat-filas

Outer-join

Inner-join

Right-join

Left-join

L贸gica de fusi贸n