41.4 Formato de los datos de entrada
Una ventaja es que las funciones de px aceptan como entrada diversos formatos: listas, diccionarios, marcos de datos de pandas de forma larga y de forma ancha y arreglos numpy.
En este primer ejemplo, utilicemos datos de juguete que vienen junto con plotly express.
df_larga = px.data.medals_long()
df_larga.rename(columns={'nation': 'País', 'medal': 'Medalla', 'count': 'Cantidad'}, inplace=True)
df_largaLa primera tiene una estructura usual, como la que se espera de una base de datos, pero plotly entiende también la segunda:
fig8 = px.bar(df_larga, x="País", y="Cantidad", color="Medalla", barmode = "group",
title="Entrada según la forma larga",
color_discrete_map={'gold':'gold', 'silver':'silver', 'bronze':'goldenrod'})Si se añade el índice del data frame de pandas, este se puede asociar al hover.
fig9 = px.bar(df_larga, x="País", y="Cantidad", color="Medalla",
barmode = "group",
title="Entrada según la forma larga",
color_discrete_map={'gold':'gold',
'silver':'silver',
'bronze':'goldenrod'},
hover_data=[df_larga.index])fig10 = px.bar(df_ancha, x="País", y=["gold", "silver", "bronze"], barmode = "group",
title="Entrada según la forma ancha",
color_discrete_map={'gold':'gold', 'silver':'silver', 'bronze':'goldenrod'})
# fig.update_layout(legend=dict(title='Medalla'), yaxis_title='Cantidad')Para arreglar los nombres de las etiquetas del hover se debe corregir agregando los labels. Es causado por la forma ancha:
px.bar(df_ancha, x="País", y=["gold", "silver", "bronze"], barmode = "group",
title="Entrada según la forma ancha, con etiquetas del hover arregladas",
color_discrete_map={'gold':'gold', 'silver':'silver', 'bronze':'goldenrod'},
labels={"value": "Cantidad", "variable": "Medalla"}).update_layout(legend=dict(title='Tipo medalla'), yaxis_title='Cantidad')Recordemos el primer ejemplo de este cuadernillo:
import pandas as pd df = pd.DataFrame({“Fruta”: [“Pitaya”, “Kiwi”, “Higo”, “Pitaya”, “Kiwi”, “Higo”], “Entrevistado”: [“Alex”, “Alex”, “Alex”, “Jacinto”, “Jacinto”, “Jacinto”], “Puntaje”: [9, 10, 3, 10, 7, 2],})
import plotly.express as px
fig = px.bar(df, x=“Fruta”, y=“Puntaje”, color=“Entrevistado”, barmode=“group”, title=“Realizado mediante plotly Express”)
También acepta las variables como columnas pandas:
import pandas as pd
df = pd.DataFrame({"Fruta": ["Pitaya", "Kiwi", "Higo", "Pitaya", "Kiwi", "Higo"],
"Entrevistado": ["Alex", "Alex", "Alex", "Jacinto", "Jacinto", "Jacinto"],
"Puntaje": [9, 10, 3, 10, 7, 2],})
fig12 = px.bar(df, x = df.Fruta, y = df.Puntaje, color = df.Entrevistado, barmode = "group",
title = "Realizado mediante plotly Express")Si se añade el índice del data frame de pandas, este se puede asociar al hover.
fig13 = px.bar(df, x = df.Fruta, y = df.Puntaje, color = df.Entrevistado, barmode = "group",
title = "Realizado mediante plotly Express",
hover_data=[df.index])En tanto se tenga la misma cantidad de filas, se puede adicionar información no incorporada en el data frame inicial. Por ejemplo:
df = pd.DataFrame({"Fruta": ["Pitaya", "Kiwi", "Higo", "Pitaya", "Kiwi", "Higo"],
"Entrevistado": ["Alex", "Alex", "Alex", "Jacinto", "Jacinto", "Jacinto"],
"Puntaje": [9, 10, 3, 10, 7, 2],})
df2 = pd.DataFrame({"Fecha": ["15-01-2023", "15-01-2023", "17-01-2023", "22-01-2023", "22-01-2023", "23-01-2023"]})
fig14 = px.bar(df, x = df.Fruta, y = df.Puntaje, color = df2.Fecha, barmode = "group",
title = "Color ajustado por fechas", hover_data = [df.Entrevistado],
labels = {"color": "Fecha"})Y, finalmente, un ejemplo pasando datos tipo numpy, útil para visualización científica.