<jupyter_start><jupyter_text>**DESAFIOS**<jupyter_code>#Importando os arquivos novamente e carregando os dados

import pandas as pd

url_dados = 'https://github.com/alura-cursos/imersaodados3/blob/main/dados/dados_experimentos.zip?raw=true'
dados = pd.read_csv(url_dados, compression='zip')

dados<jupyter_output><empty_output><jupyter_text>Desafio 01: Investigar por que a classe tratamento é tão desbalanceada? Inicialmente explorando os dados de proporção da coluna tratamento, vemos:<jupyter_code>dados['tratamento'].value_counts()
dados['tratamento'].value_counts(normalize=True)<jupyter_output><empty_output><jupyter_text>Tanto em contagem como em proporção a coluna parece bastante desbalanceada. Mas podemos subdividir os grupos Controle e ComDroga para conhecer como é a proporção dos tratamentos em cada uma dessas classes:<jupyter_code>dados_controle = dados[dados['tratamento'] == 'com_controle']
dados_controle.shape
dados_controle['tempo'].value_counts()
dados_comdroga = dados[dados['tratamento'] == 'com_droga']
dados_comdroga['tempo'].value_counts()
dados_controle['tempo'].value_counts(normalize=True)
dados_comdroga['tempo'].value_counts(normalize=True)<jupyter_output><empty_output><jupyter_text>Vemos acima que a classe tratramento está balanceada em proporção para cada um dos grupos Controle e ComDroga. Além disso, podemos verificar o mesmo dentro da classe 'dose':<jupyter_code>dados_controle['dose'].value_counts(normalize=True)
dados_comdroga['dose'].value_counts(normalize=True)<jupyter_output><empty_output><jupyter_text>Vemos que a quantidade (valores absolutos) de amostras controle é menor que a quantidade de amostras com tratamento, pois para cada amostra ComDroga temos 4 tempos e apenas 1 amostra Controle. É possível notar que a proporção de controle é praticamente a mesma em D1 e D2 e também nos tempos 24, 48, 72; bem como a proporção entre controle e tramento, nessas classes, também se mantem semelhante. Desafio 02: Plotar as 5 últimas linhas da tabela.<jupyter_code>#head() plota as 5 primeiras linhas e tail() plota as 5 ultimas
dados.tail()<jupyter_output><empty_output><jupyter_text>Desafio 03: Proporção das classes tratamento.<jupyter_code>dados['tratamento'].value_counts().plot.bar()<jupyter_output><empty_output><jupyter_text>Desafio 04: Quantos tipos de drogas foram investigados?<jupyter_code>#a quantidade de tipos diferentes de drogas testado corresponderá ao tamanho (length) do array de valores unicos da columa 'droga
len(dados['droga'].unique())
# outra forma de fazer e ainda mais simples é utilizando o nunique()
dados['droga'].nunique()<jupyter_output><empty_output><jupyter_text>Desafio 05: Procurar na documentação o método query(pandas).  Link direto para a documentação do pandas referente ao método query:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html<jupyter_code>#A query feita durante a aula com o método query ficaria:
dados_filtrados = dados.query('g-0 > 0')
dados_filtrados.head()<jupyter_output><empty_output><jupyter_text>Como mencionado na aula, a presença de hífen no nome da coluna gera um erro na interpretação do nome dentro da expressão. Para isso vamos renomear as colunas para remover o hífen Desafio 06: Renomear as colunas tirando o hífen.<jupyter_code>#essa forma de fazer a substituição é funcional, mas não é a mais elegante
#dados.columns = [i.replace('-', '') for i in dados.columns]
#dados.head(5)

#forma mais elegante
dados.columns = dados.columns.str.replace("-", "")
dados.head()
#aplicar novamente a query mencionada acima
dados_filtrados = dados.query('g0 > 0')
dados_filtrados.head()<jupyter_output><empty_output><jupyter_text>Desafio 07: Deixar os gráficos bonitões. (Matplotlib.pyplot)<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
#mesma função plot.bar colocando labels e mudando cores
dados['tempo'].value_counts().plot.bar(color = 'darkslategray')

#criando um dicionario com os estilos a serem utilizados no gráfico
font1 = {'family':'serif','color':'black','size':25}
font2 = {'family':'serif','color':'black','size':15}

plt.title("Tempo de Tratamento", fontdict = font1)
plt.xlabel("Horas de Tratamento" , fontdict = font2)
plt.ylabel("Frequência" , fontdict = font2)
# outra forma de fazer, mas o recomendado é NÃO usar GRÁFICO DE PIZZA

fig,ax= plt.subplots()
fig.patch.set_facecolor("#CBCDCB")


labels=['Com droga','Com tratamento']
colors=['#C44B4F','#607D86']
ax.pie(dados['tratamento'].value_counts(),labels=labels,explode=[0,0.3], colors=colors,autopct='%1.1f%%')
ax.set_title("Tratamentos",fontsize=15)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10774923813670004, 'fraction_numerical': 0.012407488027862429, 'mean_word_length': 7.556797020484171, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 43, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '648689', 'license': 'MIT', 'n_tokens_mistral': 1728, 'n_tokens_neox': 1660, 'n_words': 422, 'path': 'Aula01_desafios.ipynb', 'repo_name': 'caioj/ImersaoDados', 'size': '4594'}