import pandas as pd
import calendar
import numpy as np
from systemtools.number import *
from pandas.api.types import is_string_dtype, is_numeric_dtype
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid')
df = pd.read_csv('/work/DistribuicaoCloroquinaOseltamivir (2).csv', encoding = 'utf8', sep=';')
df.tail()
df.shape
df.info()
df.isna().sum()
df.sample()
df.columns = df.columns.str.strip()
df.columns = df.columns.str.lower()
# Tirando espaços das linhas
for col in df:
if is_string_dtype:
df[col] = df[col].apply(lambda x: str(x).strip())
#Convrtendo o tipo
df['quantidade'] = df['quantidade'].astype('int64')
df['data de entrega'] = pd.to_datetime(df['data de entrega'], format='%d/%m/%Y')
df['ano'] = df['data de entrega'].dt.year
df['mes'] = df['data de entrega'].dt.month
#Retirando caracteres indesejados das colunas vr. unitario e vr. total e convertendo para float
df['valor unitário'] = df['valor unitário'].apply(lambda x: parseNumber(x))
df['valor total'] = df['valor total'].apply(lambda x: parseNumber(x))
# mudando numero do mes para o nome
df['nome mes'] = df['mes'].apply(lambda x: calendar.month_abbr[x])
df.drop(['mes'], axis=1, inplace=True)
#Renomeando colunas
cols = ['regiao', 'uf', 'destinatario', 'localidade', 'item', 'programa_saude', 'quantidade', 'status',
'data_entrega', 'valor_unitario', 'valor_total', 'ano', 'nome_mes']
df.columns = map(str.lower,cols)
df.dtypes
# Estou separando apenas os dados referente a covid-19 e com Status de entregue, uma vez que não consigo analisar o que seria 'remanejamento'.
mask = (df['programa_saude'] == 'COVID-19') & (df['status'] == 'ENTREGA REALIZADA')
df_covid = df.loc[mask]
df_covid.head()
df_covid_by_year = df_covid.groupby("ano")['quantidade'].sum().reset_index()
df_covid_by_year
plt.figure(figsize=(18,7));
g = sns.barplot(x='ano', y='quantidade', data = df_covid_by_year, palette='Blues_r');
plt.title('TOTAL CLOROQUINA ENVIDA POR ANO', size=15);
plt.ticklabel_format(style='plain', axis='y')
aux2 = df_covid.groupby(['regiao', 'item'])['quantidade'].sum().reset_index()
aux2 = pd.DataFrame(aux2)
aux2 = aux2.nlargest(10, 'quantidade')
aux2.sample()
plt.figure(figsize=(18,7));
g = sns.barplot(x='regiao', y='quantidade', data = aux2, hue='item', palette='Blues_r');
plt.title('REGIÕES QUE MAIS RECEBERAM MEDICAMENTOS PARA COMBATE A COVID-19', size=15);
plt.ticklabel_format(style='plain', axis='y')
aux = df_covid.groupby(['uf'])['quantidade'].sum().reset_index()
aux = pd.DataFrame(aux)
top10 = aux.nlargest(27, 'quantidade')
plt.figure(figsize=(18.5,7))
g = sns.barplot(y='uf', x='quantidade', data = top10, palette='cool_r');
plt.title('ESTADOS QUE MAIS RECEBERAM MEDICAMENTOS PARA COVID-19', size = 15);
plt.ticklabel_format(style='plain', axis='x')
df_sms = df_covid.loc[ df['destinatario'] == 'SMS']
aux7 = df_sms.groupby(['localidade'])['quantidade'].sum().reset_index()
aux7 = pd.DataFrame(aux7)
aux7 = aux7.nlargest(20, 'quantidade')
aux7.sample()
plt.figure(figsize=(18.5,7))
g = sns.barplot(y='localidade', x='quantidade', data = aux7, palette='cool_r');
plt.title('MUNICIPIOS QUE MAIS RECEBERAM MEDICAMENTOS PARA COVI-19', size = 15);
plt.ticklabel_format(style='plain', axis='x')
df_covid_2020 = df_covid[df_covid['data_entrega'].dt.year == 2020]
aux3 = df_covid_2020.groupby(['nome_mes'])['quantidade'].sum().reset_index()
aux3 = pd.DataFrame(aux3)
aux3['nome_mes']= pd.Categorical(aux3['nome_mes'],categories=['Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Dec'],ordered=True)
aux3 = aux3.sort_values('nome_mes',ascending=False)
aux3
plt.figure(figsize=(18.5,7))
g = sns.barplot(x='nome_mes', y='quantidade', data = aux3, palette='cool');
plt.title(' TOTAL MEDICAMENTOS DISTRUIBUIDOS EM 2020 POR MÊS', size=15);
plt.ticklabel_format(style='plain', axis='y')
plt.xlabel('Mês');
df_covid_2021 = df_covid[df_covid['data_entrega'].dt.year == 2021]
aux4 = df_covid_2021.groupby(['nome_mes', 'uf'])['quantidade'].sum().reset_index()
aux4 = pd.DataFrame(aux4)
aux4['nome_mes']= pd.Categorical(aux4['nome_mes'],categories=['Jan', 'Mar', 'Apr'],ordered=True)
aux4 = aux4.sort_values('nome_mes',ascending=False)
aux4
plt.figure(figsize=(18,7))
g = sns.barplot(x='nome_mes', y='quantidade', hue='uf', data = aux4, palette='cool');
plt.title(' TOTAL MEDICAMENTOS DISTRUIBUIDOS EM 2021 POR MÊS', size = 15);
plt.xlabel('Mês');
aux4['quantidade'].sum()
df_ind = df_covid.loc[ (df_covid['destinatario'] != 'SMS') & (df_covid['destinatario'] != 'SES')]
aux8 = df_ind.groupby(['localidade', 'uf', 'data_entrega', 'nome_mes'])['quantidade'].sum().reset_index()
aux8 = pd.DataFrame(aux8)
aux8
print(f"total enviado a terras indiginas: {aux8['quantidade'].sum()}")
plt.figure(figsize=(18,7))
g = sns.barplot(y='localidade', x='quantidade', hue='uf', data = aux8, palette='cool');
plt.title(' TOTAL MEDICAMENTOS DISTRUIBUIDOS A TERRAS INDÍGENAS', size = 15);