Soluci贸n

Pandas

Vista general

En esta soluci贸n nos enfocaremos en c贸mo pivotar un DataFrame. Pivotar una tabla significa remodelarla de tal forma que las columnas se convierten en filas y las filas en columnas. Desentra帽emos la soluci贸n y el uso de la funci贸n pivot en detalle.

Conceptos clave:

  • Funci贸n pivot: La funci贸n pivote en pandas se usa para remodelar los datos en base a una columna de valores para obtener un nuevo DataFrame. pivot es cap谩z de recibir muchos argumentos, en seguida se listan los que vamos a utilizar:

    • index: Determina las filas del nuevo DataFrame.
    • columns: Determina las columnas en el nuevo DataFrame.
    • values: Especifica los valores a ser usados al momento de remodelar la tabla.

Intuici贸n

V茅amos la soluci贸n paso a paso:

  1. Importar pandas:
import pandas as pd

Esto importa la libreria pandas y le asigna un alias pd. pandas es una libreria, escrita en Python, de c贸digo abierto para an谩lisis y manipulaci贸n de datos, se caracteriza por ser r谩pida, poderosa, flexible y f谩cil de utilizar.

  1. La funci贸n pivot
ans = weather.pivot(index='month', columns='city', values='temperature')

Esto es lo que hace cada argumento de la funci贸n pivot:

  • index: Determina las filas del nuevo DataFrame. En este ejemplo, utilizamos la columna month del DataFrame original como 铆ndice, lo que significa que nuestra tabla pivote tendr谩 una fila por cada valor 煤nico de la columna month.

  • columns: Determina las columnas del nuevo DataFrame. Aqu铆, estamos utilizando la columna city, lo que significa que nuestra tabla pivote tendr谩 una columna por cada valor 煤nico de la columna city.

  • values: Este argumento especifica los valores que se utilizar谩n al remodelar la tabla. En este ejemplo, utilizamos la columna temperature del DataFrame original.

  1. Retornar el DataFrame modificado:
return ans

Esta l铆nea de c贸digo retorna el DataFrame remodelado.

Usar la soluci贸n

Visualizaci贸n de la funci贸n pivot
reshape data pivot fig1

Cuando pasamos este DataFrame a la funci贸n:

city month temperature
Jacksonville January 13
Jacksonville February 23
Jacksonville March 38
Jacksonville April 5
Jacksonville May 34
ElPaso January 20
ElPaso February 6
ElPaso March 26
ElPaso April 2
ElPaso May 43

Retornar谩:

month ElPaso Jacksonville
April 2 5
February 6 23
January 20 13
March 26 38
May 43 34

Notas:

  • Datos faltantes: La funci贸n pivot no soporta filas duplicadas para la misma combinaci贸n de index/column. En caso de existir duplicados, podr铆a considerar el uso de pivot_table, que puede agregar las entradas duplicadas.

  • Tipos de dato: Seg煤n la tabla, las columnas city y month son de tipo "Object", que equivale a un string en pandas, mientras que temperature es de tipo entero.

  • Orden: La salida no tiene por qu茅 seguir el mismo orden que en el ejemplo (es decir, de enero a mayo). Si lo quieres en un orden espec铆fico, tendr铆as que ordenarlo despu茅s de pivotar.

Soluci贸n completa con ordenamiento:

import pandas as pd


def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:
    ans = weather.pivot(index='month', columns='city', values='temperature')
    month_order = [
        "January", "February", "March",
        "April", "May", "June", "July",
        "August", "September", "October",
        "November", "December"
    ]
    ans = ans.reindex(month_order)
    return ans

En esta soluci贸n, despu茅s de pivotar, el DataFrame es ordenado en base al 贸rden de los meses. El DataFrame resultante ser铆a:

month ElPaso Jacksonville
January 20 13
February 6 23
March 26 38
April 2 5
May 43 34

Implementaci贸n

import pandas as pd


def pivotTable(weather: pd.DataFrame) -> pd.DataFrame:
    ans = weather.pivot(index='month',
                        columns='city',
                        values='temperature')
    return ans

slackmart blog 漏 2024