Representan proporciones de un todo: cada sector equivale a una fracción de 100%. Se basan en la lectura de ángulos y áreas, lo que es difícil para la percepción humana. Se usan principalmente para mostrar porcentajes simples con pocas categorías. Son visualmente reconocibles y llamativos como tipo de gráfico estándar.
Cuándo usar
Cuando se tienen muy pocas categorías (idealmente entre 2 y 4).
Para mostrar de manera simple cómo una parte se compara con el todo.
En situaciones donde el público está acostumbrado a este tipo de gráfico.
Errores comunes
Incluir demasiadas categorías, más de 5–6 sectores.
Comparar múltiples gráficos de pastel, lo cual dificulta ver patrones o cambios.
Usar efectos en 3D que distorsionan la percepción.
Colocar la leyenda separada, obligando a saltar la vista.
Utilizar sectores explotados (exploded pie) que rompen la proporción.
Mostrar porcentajes que no suman 100%.
Emplear colores demasiado similares que impiden distinguir categorías.
Alternativas
Gráfico de barras: más preciso y fácil de comparar valores.
Lollipop chart: variante clara y elegante para varias categorías.
Treemap: adecuado para mostrar la composición de un todo con muchas partes.
Dataset: Precios Agroindustria de Cacao (2012 - 2025)
Archivo:MAG_PreciosAgroindustriaCacao_2025Junio.csv Fuente: Ministerio de Agricultura y Ganadería (MAG), Ecuador Última actualización: Junio 2025
import pandas as pddf = pd.read_csv("mag_preciosagroindustriacacao_2025junio.csv", sep=";")print(df.head())print(df.info())
PACC_ANIO PACC_MES DPA_PROVINCIA DPA_CANTON PACC_PRODUCTO \
0 2012 Enero El Oro Arenillas Cacao seco mezclado
1 2012 Enero El Oro Arenillas Cacao seco mezclado
2 2012 Enero El Oro El Guabo Cacao seco mezclado
3 2012 Enero El Oro El Guabo Cacao seco mezclado
4 2012 Enero El Oro Machala Cacao seco mezclado
PACC_PRESENTACION PACC_TIPO PACC_PRECIO_USD PACC_USD_KG
0 Quintal de 100,00 libras Compra 71.41 1.57
1 Quintal de 100,00 libras Venta 74.06 1.63
2 Quintal de 100,00 libras Compra 73.75 1.63
3 Quintal de 100,00 libras Venta 84.00 1.85
4 Quintal de 100,00 libras Compra 75.00 1.65
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26246 entries, 0 to 26245
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PACC_ANIO 26246 non-null int64
1 PACC_MES 26246 non-null object
2 DPA_PROVINCIA 26246 non-null object
3 DPA_CANTON 26246 non-null object
4 PACC_PRODUCTO 26246 non-null object
5 PACC_PRESENTACION 26246 non-null object
6 PACC_TIPO 26246 non-null object
7 PACC_PRECIO_USD 26246 non-null float64
8 PACC_USD_KG 26246 non-null float64
dtypes: float64(2), int64(1), object(6)
memory usage: 1.8+ MB
None
import plotly.express as pximport plotly.io as pioimport numpy as nppio.renderers.default ="notebook"
# Agrupar por provincia y cantón y calcular promediodf = df[df["DPA_PROVINCIA"] =='Sucumbios']df_group = ( df.groupby([ "DPA_CANTON"], as_index=False)["PACC_PRECIO_USD"] .mean() .round(2))df_group.head()
DPA_CANTON
PACC_PRECIO_USD
0
Cascales
62.41
1
Lago Agrio
100.49
2
Shushufindi
86.30
# Gráfico de pastel usando el promedio de precio por cantónfig = px.pie( df_group, values="PACC_PRECIO_USD", names="DPA_CANTON", title="Distribución promedio de precios de cacao por cantón", hole=0.3# si quieres tipo dona)fig.show()
import plotly.graph_objects as go# Creamos la figura con los datos del dataframe agrupadofig = go.Figure(data=[go.Pie( labels=df_group["DPA_CANTON"], # nombres de los cantones values=df_group["PACC_PRECIO_USD"], # valores promedio textinfo='label+percent', insidetextorientation='radial', hole=0.3# para hacerlo tipo dona)])# Título del gráficofig.update_layout( title="Distribución promedio de precios de cacao en Sucumbios")fig.show()