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贸npivot
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:
- 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.
- 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 columnamonth
del DataFrame original como 铆ndice, lo que significa que nuestra tabla pivote tendr谩 una fila por cada valor 煤nico de la columnamonth
.columns
: Determina las columnas del nuevo DataFrame. Aqu铆, estamos utilizando la columnacity
, lo que significa que nuestra tabla pivote tendr谩 una columna por cada valor 煤nico de la columnacity
.values
: Este argumento especifica los valores que se utilizar谩n al remodelar la tabla. En este ejemplo, utilizamos la columnatemperature
del DataFrame original.
- 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
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 depivot_table
, que puede agregar las entradas duplicadas.Tipos de dato: Seg煤n la tabla, las columnas
city
ymonth
son de tipo"Object"
, que equivale a un string en pandas, mientras quetemperature
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