Como posso fazer um gráfico de crescimento partir do contagio de 100 indivíduos. De 5 países diferentes. Que alcançaram esse valor em datas diferentes e plotar de uma forma bem informativa
Como posso fazer um gráfico de crescimento partir do contagio de 100 indivíduos. De 5 países diferentes. Que alcançaram esse valor em datas diferentes e plotar de uma forma bem informativa
Boas Jeronimo! Tudo bem? Espero que sim!
Para resolver essa questão existem muitas formas, vou abordar uma que acho bastante eficiente, tentando usar ao máximo o que foi aprendido até agora.
Antes de tudo, vamos importar o pandas e a base de dados:
import pandas as pd
confirmed = pd.read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv")
Para começar , eu refiz a seleção por país:
confirmed_by_country = confirmed.groupby("Country/Region").sum()
E então, selecionei aleatoriamente 5 países para fazer a comparação:
aleatory_countries = confirmed_by_country.sample(5, random_state=151)
Nesse caso, o parâmetro random_state=151
serve para que o mesmo resultado que eu obtive posssa ser replicado.
Agora, temos como aleatory_countries
o DataFrame:
Country/Region | Lat | Long | 1/22/20 | 1/23/20 | 1/24/20 |
---|---|---|---|---|---|
Singapore | 1.2833 | 103.833 | 0 | 1 | 3 |
Greece | 39.0742 | 21.8243 | 0 | 0 | 0 |
Cyprus | 35.1264 | 33.4299 | 0 | 0 | 0 |
Armenia | 40.0691 | 45.0382 | 0 | 0 | 0 |
Madagascar | -18.7669 | 46.8691 | 0 | 0 | 0 |
Agora, para facilitar nossos trabalhos, vamos fazer duas alterações nesse DataFrame, a primeira é deixar de lado latitude e longitude, assim como trabalhar com o DataFrame transposto, que tem trocando linhas e colunas:
countries_data = aleatory_countries.iloc[:,3:]
countries_data = countries_data.T
countries_data.head()
Que resulta em:
Singapore | Greece | Cyprus | Armenia | Madagascar | |
---|---|---|---|---|---|
1/23/20 | 1 | 0 | 0 | 0 | 0 |
1/24/20 | 3 | 0 | 0 | 0 | 0 |
1/25/20 | 3 | 0 | 0 | 0 | 0 |
1/26/20 | 4 | 0 | 0 | 0 | 0 |
1/27/20 | 5 | 0 | 0 | 0 | 0 |
Agora, basta encontrar um período no qual todos oa países apresentem mais de 100 casos. O que eu fiz estimando valores:
countries_data.iloc[80]
Agora, sabemos que a partir da linha 80, todos os países possuem ao menos 100 casos.
Para plotar os dados num gráfico, basta realizar o plot:
fig = countries_data.iloc[:80].plot(ylim=(0,100), figsize=(25,10))
Passando o parâmetro ylim=(0, 100)
, especificamos que o gráfico deve iniciar-se em 0 casos e finalizar com 100, dando maior importância ao tempo no qual esses países alcançam essa marca.
Fiz mais algumas alterações para melhorar o gráfico depois disso:
import matplotlib.pyplot as plt
fig = countries_data.iloc[:80].plot(ylim=(0,100), figsize=(25,10))
plt.title("Quantidade de tempo até os países atingirem 100 casos")
plt.ylabel("Quantidade de casos")
plt.xlabel("Tempo")
Espero ter ajudado!
Bons Estudos!