Soluci贸n - Remodelar datos: Pivot

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 pivot 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 varios 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:

citymonthtemperature
JacksonvilleJanuary13
JacksonvilleFebruary23
JacksonvilleMarch38
JacksonvilleApril5
JacksonvilleMay34
ElPasoJanuary20
ElPasoFebruary6
ElPasoMarch26
ElPasoApril2
ElPasoMay43

Retornar谩:

monthElPasoJacksonville
April25
February623
January2013
March2638
May4334

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:

monthElPasoJacksonville
January2013
February623
March2638
April25
May4334

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 漏 2025