Gráficas de cantantes
- Duración:
- 50 min
- Agrupamento:
- 2
Ides recuperar o programa dos cantantes do reto con pandas:
Tarefas: Ides crear tres tipos de gráficos investigando e completando o código donde hai ♥
Paso 1: Importa as librarías no programa
Engade estas dúas liñas completadas ao principio do voso programa para importar as librarías (xa temos importada pandas):
♥ matplotlib.pyplot as plt # Para gráficos básicos
import seaborn as ♥ # Para gráficos estilizados
Paso 2: Crear un gráfico de barras das gañancias con Matplotlib
Representa as gañancias dos cantantes para comparar visualmente. Engade o seguinte código completado ao programa:
# Gráfico de barras para visualizar as gañancias dos cantantes
plt.figure(figsize=(♥, ♥)) # Definimos o tamaño do gráficoplt.bar(df['Cantante'], df['Gañancias (millóns de $)'], color='♥♥♥') # Cantantes no eixo x e gañancias no eixo y
plt.title('♥♥♥♥ dos Cantantes (millóns de $)', fontsize=♥) # Título do gráfico
plt.♥label('Cantante', fontsize=12) # Etiqueta do eixo x
plt.ylabel('Gañancias (millóns de $)', fontsize=♥) # Etiqueta do eixo y
plt.♥ticks(rotation=45) # Rotamos as etiquetas no eixo x para maior visibilidade
plt.tight_layout() # Axustamos os elementos para evitar solapamentos
plt.show()
Pregunta: Cal cantante gañou máis? Para que serve plt.xticks(rotation=45)?
Paso 3: Crear un gráfico de torta (pie chart) das porcentaxes de gañancias con Matplotlib
Agora verás como as gañancias se distribúen en porcentaxes entre os cantantes. Engade este código completado:
# Gráfico de torta para as porcentaxes de gañancias
plt.figure(figsize=(♥, 8)) # Tamaño do gráfico
plt.pie(df['Porcentaxe de Gañancias'], labels=♥['Cantante'], autopct='%1.1f%%', colors=['pink', 'lightgreen', 'yellow', 'lightblue', '♥♥♥'])
plt.title('Porcentaxe de Gañancias por Cantante', fontsize=♥) # Título
plt.show()
Pregunta: Intenta explicar o resultado. Que é autopct='%1.1f%%'?
Paso 4: Usar Seaborn para un gráfico máis organizado
Seaborn ofrece gráficos máis estéticos e avanzados. Completa e copia este código para xenerar unha gáfica de barras ordenada:
# Ordenar as gañancias e os cantantes mantendo a relación entre eles
ganancias_ordenadas, cantantes_ordenados = zip(*sorted(zip(df['Gañancias (millóns de $)'], df['Cantante'])))
# Crear un DataFrame novo cos datos ordenados para Seaborn
df_ordenado = pd.DataFrame({'Cantante': cantantes_♥♥♥, 'Gañancias (millóns de $)': ganancias_♥♥♥})
# Gráfico de barras estilizado con Seaborn usando os datos ordenados
plt.figure(figsize=(10, 6)) # Definir tamaño do gráfico
sns.barplot(♥='Cantante', y='Gañancias (millóns de $)', data=df_ordenado, palette='pastel') # Crear gráfico
plt.title('Gañancias dos Cantantes (millóns de $) (Ordenadas)', fontsize=16) # Título
plt.xlabel('Cantante', fontsize=12) # Etiqueta do eixo x
plt.♥label('Gañancias (millóns de $)', fontsize=12) # Etiqueta do eixo y
plt.xticks(rotation=♥) # Rotar etiquetas no eixo x
plt.tight_layout() # Axustar elementos visuais
plt.show()
Pregunta : Como cambia a información cando a ordenamos? É máis doado interpretala? Que fai zip? Que fai sorted?
Paso 5: Personaliza!
Propoñoche:
Cambiar os colores nos gráficos.
Engadir outros datos interesantes ao DataFrame.
Probar outros tipos de gráficos, como scatterplots ou gráficos de liñas.
Lembra:A IA está para axudarche, pregúntalle!
Exemplo de resultado esperado
Exemplo de resultado esperado
Exemplo de resultado esperado
Código Python: Datos dos cantantes
# Importamos as librarías necesarias
import pandas as pd # Pandas para traballar con datos tabulares
# ---- CREACIÓN DO DATAFRAME ----
# Creamos un dicionario chamado 'data' que contén información sobre varios cantantes
data = {
'Cantante': ['Taylor Swift', 'Paul McCartney', 'Bruce Springsteen', 'Adele', 'Kim Kardashian'],
'Gañancias (millóns de $)': [1043, 1300, 650, 1000, 2000], # Gañancias individuais en millóns de dólares
'Posesións': ["Chicle de Céline Dion", "Subasta de $25,000 de Janet Jackson", None, None, None], # Obxectos curiosos
'Parellas': [None, None, None, 'Simon Konecki', 'Kanye West (ex)'] # Información sobre parellas
}
# Convertimos o dicionario nun DataFrame de pandas, que permite organizar os datos en formato tabular
df = pd.DataFrame(data)
# Mostramos o DataFrame por pantalla para ver os datos iniciais
print("DataFrame inicial:")
print(df)
# ---- ACTIVIDADE 0: SELECCIÓN DE DATOS ----
# Seleccionamos só as columnas de 'Cantante' e 'Gañancias (millóns de $)' para traballar con elas
ganancias = df[['Cantante', 'Gañancias (millóns de $)']]
# Mostramos as gañancias dos cantantes
print("\nGañancias dos cantantes:")
print(ganancias)
RESPOSTA
- O parámetro plt.xticks(rotation=45) utilízase para rotar as etiquetas do eixo x nun gráfico de Matplotlib. Aquí:
rotation=45: Indica que as etiquetas se rotan 45 graos, facéndoas inclinadas.
Isto é útil cando as etiquetas son longas e poden solaparse ou ser difíciles de ler se están en horizontal. Por exemplo, nun gráfico de barras onde os nomes dos cantantes aparecen no eixo x, rotar as etiquetas fai que sexan máis visibles e claras.
- O parámetro autopct='%1.1f%%' úsase nos gráficos de torta (ou pie charts) de Matplotlib para mostrar automáticamente as porcentaxes correspondentes a cada sección da torta.
%1.1f: Indica o formato do número que se vai mostrar. Neste caso:
1 antes do punto significa que terá un díxito enteiro.
.1 despois do punto significa que incluirá 1 decimal.
f significa que é un número en formato decimal (de "float").
%%: Engade o símbolo de porcentaxe (%) ao final da cifra.
Por exemplo:Se unha sección da torta corresponde ao 25.456%, co formato '%1.1f%%' amosarase como 25.5%.
En resumo, autopct='%1.1f%%' fai que as porcentaxes aparezan de forma clara e precisa nas distintas seccións dun gráfico de torta.
Código Python: Gráficas dos cantantes
# Importamos as librarías necesarias
import pandas as pd # Pandas para traballar con datos tabulares
import matplotlib.pyplot as plt # Matplotlib para gráficos básicos
import seaborn as sns # Seaborn para gráficos máis estilizados
# ---- CREACIÓN DO DATAFRAME ----
# Creamos un dicionario chamado 'data' que contén información sobre varios cantantes
data = {
'Cantante': ['Taylor Swift', 'Paul McCartney', 'Bruce Springsteen', 'Adele', 'Kim Kardashian'],
'Gañancias (millóns de $)': [1043, 1300, 650, 1000, 2000], # Gañancias individuais en millóns de dólares
'Posesións': ["Chicle de Céline Dion", "Subasta de $25,000 de Janet Jackson", None, None, None], # Obxectos curiosos
'Parellas': [None, None, None, 'Simon Konecki', 'Kanye West (ex)'] # Información sobre parellas
}
# Convertimos o dicionario nun DataFrame de pandas, que permite organizar os datos en formato tabular
df = pd.DataFrame(data)
# Mostramos o DataFrame por pantalla para ver os datos iniciais
print("DataFrame inicial:")
print(df)
# ---- ACTIVIDADE 0: SELECCIÓN DE DATOS ----
# Seleccionamos só as columnas de 'Cantante' e 'Gañancias (millóns de $)' para traballar con elas
ganancias = df[['Cantante', 'Gañancias (millóns de $)']]
# Mostramos as gañancias dos cantantes
print("\nGañancias dos cantantes:")
print(ganancias)
# ---- ACTIVIDADE 1,2,3: VISUALIZACIÓN DE DATOS ----
# --- Gráfico de barras con Matplotlib ---
# Visualizamos as gañancias dos cantantes
plt.figure(figsize=(10, 6)) # Definimos o tamaño do gráfico
plt.bar(df['Cantante'], df['Gañancias (millóns de $)'], color='lightblue') # As barras mostran as gañancias
plt.title('Gañancias dos Cantantes (millóns de $)', fontsize=16) # Engadimos o título
plt.xlabel('Cantante', fontsize=12) # Etiqueta do eixo x
plt.ylabel('Gañancias (millóns de $)', fontsize=12) # Etiqueta do eixo y
plt.xticks(rotation=45) # Rotamos os nomes dos cantantes no eixo x para maior claridade
plt.tight_layout() # Axustamos os elementos para evitar solapamentos
plt.show()
# --- Gráfico de torta con Matplotlib ---
# Mostramos as porcentaxes de gañancias de cada cantante
plt.figure(figsize=(8, 8)) # Definimos o tamaño do gráfico
plt.pie(df['Gañancias (millóns de $)'], labels=df['Cantante'], autopct='%1.1f%%', colors=['pink', 'lightgreen', 'yellow', 'lightblue', 'orange']) # Configuración do gráfico de torta
plt.title('Porcentaxe de Gañancias por Cantante', fontsize=16) # Engadimos o título
plt.show()
# --- Gráfico de barras estilizado con Seaborn ---
# Usamos Seaborn para crear un gráfico de barras máis atractivo
# Ordenar as gañancias e os cantantes mantendo a relación entre eles
ganancias_ordenadas, cantantes_ordenados = zip(*sorted(zip(df['Gañancias (millóns de $)'], df['Cantante'])))
# Crear un DataFrame novo cos datos ordenados para Seaborn
df_ordenado = pd.DataFrame({'Cantante': cantantes_ordenados, 'Gañancias (millóns de $)': ganancias_ordenadas})
# Gráfico de barras estilizado con Seaborn usando os datos ordenados
plt.figure(figsize=(10, 6)) # Definir tamaño do gráfico
sns.barplot(x='Cantante', y='Gañancias (millóns de $)', data=df_ordenado, palette='pastel') # Crear gráfico
plt.title('Gañancias dos Cantantes (millóns de $) (Ordenadas)', fontsize=16) # Título
plt.xlabel('Cantante', fontsize=12) # Etiqueta do eixo x
plt.ylabel('Gañancias (millóns de $)', fontsize=12) # Etiqueta do eixo y
plt.xticks(rotation=45) # Rotar etiquetas no eixo x
plt.tight_layout() # Axustar elementos visuais
plt.show()
# ---- ACTIVIDADE 4: REFLEXIÓN ----
print("\nReto completado! Que gráfico vos pareceu máis útil? Cal creedes que transmite mellor a información sobre os cantantes?")