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- pivoten pandas se usa para remodelar los datos en base a una columna de valores para obtener un nuevo DataFrame.- pivotes 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:
- Importar pandas:
import pandas as pdEsto 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.
- 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- monthdel 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- temperaturedel DataFrame original.
- Retornar el DataFrame modificado:
return ansEsta l铆nea de c贸digo retorna el DataFrame remodelado.
Usar la soluci贸n
Visualizaci贸n de la funci贸n pivot
 
 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 - pivotno 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 - cityy- monthson de tipo- "Object", que equivale a un string en pandas, mientras que- temperaturees 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 ansEn 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