Atualmente, estou trabalhando com python usando Pandas e Matplotlib.pyplot, no qual usei informações existentes para criar dois gráficos de dispersão diferentes de três tipos de pinguins, filtrando os dados. Atualmente funciona com o loop for, mas quero saber como poderia obter o mesmo resultado usando três quadros de dados em vez de fazer um loop em um.
Este é o código que tenho atualmente
import pandas as pd
URL= 'https://gist.githubusercontent.com/anibali/c2abc8cab4a2f7b0a6518d11a67c693c/raw/3b1bb5264736bb762584104c9e7a828bef0f6ec8/penguins.csv'
df = pd.read_csv (URL)
#Graph 1
import matplotlib.pyplot as plt
body_mass = df['body_mass_g']
bill_length = df['bill_length_mm']
species = df['species']
fig, ax = plt.subplots()
adelie = df[df['species']== 'Adelie']
chinstrap = df[df['species']== 'Chinstrap']
gentoo = df[df['species']== 'Gentoo']
data = pd.DataFrame({"Species": species, "Body Mass": body_mass, "Bill Length": bill_length})
groups = data.groupby("Species")
for name, group in groups:
plt.plot(group["Body Mass"], group["Bill Length"], marker="o", linestyle="", label=name)
ax.set_title('Penguin measurements by species')
ax.set_xlabel('Body mass (g)')
ax.set_ylabel('Bill length (mm)')
fig.tight_layout()
plt.legend()
plt.show()
#Graph 2
df['bill_proportion'] = (df['bill_length_mm']/df['bill_depth_mm'])
bill_proportion = df['bill_proportion']
body_mass = df['body_mass_g']
bill_length = df['bill_length_mm']
bill_depth = df['bill_depth_mm']
species = df['species']
fig, ax = plt.subplots()
adelie = df[df['species']== 'Adelie']
chinstrap = df[df['species']== 'Chinstrap']
gentoo = df[df['species']== 'Gentoo']
data = pd.DataFrame({"Species": species, "Body Mass": body_mass, "Bill Proportion": bill_proportion})
groups = data.groupby("Species")
for name, group in groups:
plt.plot(group["Body Mass"], group["Bill Proportion"], marker="o", linestyle="", label=name)
ax.set_title('Penguin proportions by species')
ax.set_xlabel('Body mass (g)')
ax.set_ylabel('Bill proportion (length/width)')
fig.tight_layout()
plt.legend()
plt.show()
Atualmente funciona como um loop, mas quero usar três quadros de dados e não fazer um loop, mas não tenho certeza de como conseguir isso. Eu ainda quero que todos os três quadros de dados apareçam no mesmo gráfico de dispersão para que pareça exatamente o mesmo que agora, mas use três quadros de dados
O código abaixo divide o dataframe em 3 e, em seguida, plota.
Há repetição de código, especialmente para a plotagem. Você pode colocar parte do código em uma função.