Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sugestões para melhoria no meu código

Fala pessoal,

Fiz um projetinho aqui para treinar, usando dados reais do ourworldindata.com. A ideia é criar gráficos dos casos de covid, selecionando por país.

O código mais "elegante" que consegui fazer é este abaixo. Está funcionando.

Alguém tem dicas pra melhorar? Algum método mais eficiente para varrer os dados e criar o gráfico?

Obrigado!!!

import pandas as pd
import matplotlib.pyplot as plt

dataset = pd.read_csv('https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/owid-covid-data.csv', index_col=False, parse_dates=['date'])

paises = ['Brazil','Germany', 'Italy']
plt.figure(figsize=(15,6))
for pais in paises:
    x = dataset.loc[dataset['location'] == pais]['date']
    y = dataset.loc[dataset['location'] == pais]['new_cases_per_million'].rolling(7).mean() # já calculando a média móvel de 7 dias
    plt.plot(x,y)

plt.title('Novos casos/milhão de hab')
plt.xlabel('Data')
plt.ylabel('Casos')
plt.legend(paises)
plt.xticks(rotation=45, horizontalalignment='center')
plt.show()  
2 respostas
solução!

Olá, Rafael! Tudo tranquilo por aí?

Gostei muito da sua resposta. O que poderia ser feito de diferente é a utilização do método .query, o exemplo abaixo demonstra como seria a aplicação desse método para o exemplo enviado por você:

import pandas as pd
import matplotlib.pyplot as plt

dataset = pd.read_csv('https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/owid-covid-data.csv', index_col=False, parse_dates=['date'])

paises = ['Brazil','Germany','Italy']

plt.figure(figsize=(15,6))
for pais in paises:
    x = dataset.query('location == @pais')['date']
    y = dataset.query('location == @pais')['new_cases_per_million'].rolling(7).mean() # já calculando a média móvel de 7 dias
    plt.plot(x,y)

plt.title('Média Móvel de 7 dias para novos casos/milhão de hab')
plt.xlabel('Data')
plt.ylabel('Nº de Casos')
plt.legend(paises)
plt.show()

O query funciona de forma semelhante ao .loc, só que de forma mais sucinta. Dentro do parênteses você coloca a expressão para realizar a seleção em seu dataset. No caso que mandei acima, estou selecionando as linhas do dataset onde a location é igual ao pais, que é a variável do for, e estamos selecionando apenas as colunas date e new_cases_per_million.

Parabéns pela proatividade de ir atrás de novos desafios, isso é essencial para o aprendizado, e continue sempre compartilhando conosco suas soluções, adoramos vê-las.

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Show!! Obrigado pela resposta..

Eu tinha tentado usar o método query, mas não estava dando certo...estava faltando o "@" na frente da variável..