<jupyter_start><jupyter_text>**AULA 01 - IMERSÃO DE DADOS ALURA**<jupyter_code>import pandas as pd #biblioteca criada para a linguagem python para manipulação e análise de dados

url_dados = 'https://github.com/alura-cursos/imersaodados3/blob/main/dados/dados_experimentos.zip?raw=true'

dados = pd.read_csv(url_dados, compression = 'zip') #usamos o compression para extrair o arquivo do zip

print(dados.head()) #exibe apenas as 5 primeiras linhas da base de dados

print(dados.shape) # informa quantas linhas e colunas temos na base
dados['tratamento'] #podemos ver os dados da coluna tratamento
dados['tratamento'].unique() #podemos ver os elementos únicos da coluna, equivale-se a um select distinct
dados['tempo'].unique()
dados['dose'].unique()
dados['droga'].unique()
dados['g-0'].unique()
dados['tratamento'].value_counts() #conta a quantidade de cada dado
dados['dose'].value_counts()
dados['dose'].value_counts(normalize = True)
dados['tratamento'].value_counts().plot.pie() #USAMOS O PLOT PARA PLOTAR UM GRÁFICO, O SEGUNDO PARAMETRO (PIE) É O TIPO DE GRÁFICO QUE QUEREMOS
dados['tempo'].value_counts().plot.pie()
dados['tempo'].value_counts().plot.bar() # AQUI USAMOS O BAR PARA CRIAR UM GRÁFICO DE BARRAS
dados_filtrados = dados[dados['g-0'] > 0] # FILTRO
dados_filtrados.head() # EXIBINDO APENAS AS 5 PRIMEIRAS LINHAS DO FILTRO<jupyter_output><empty_output><jupyter_text>DESAFIO 01 Investigar por que a classe tratamento é tão desbalanceada<jupyter_code>dados_com_droga = dados.query("tratamento == 'com_droga'") # RESOLUÇÃO DESAFIO 01
dados_com_droga['droga'].nunique() # PODEMOS VER QUE FORAM USADOS 3288 TIPOS DE DROGA, USAMOS O NUNIQUE PARA RETORNAR O NÚMERO DE ELEMENTOS ÚNICOS NA BASE D DADOS
dados_com_controle = dados.query("tratamento == 'com_controle'") # RESOLUÇÃO DESAFIO 01
dados_com_controle['droga'].nunique() # PODEMOS VER QUE FOI USADO APENAS 1 TIPO DE DROGA, POR ISSO EXISTE O DESBALANCEAMENTO<jupyter_output><empty_output><jupyter_text>DESAFIO 2 Plotar as 5 últimas linhas da tabela<jupyter_code>dados.tail() # RESOLUÇÃO DESAFIO 02<jupyter_output><empty_output><jupyter_text>DESAFIO 3 Calcular proporção das classes tratamento<jupyter_code>dados['tratamento'].value_counts(normalize = True) # RESOLUÇÃO DESAFIO 03<jupyter_output><empty_output><jupyter_text>DESAFIO 04 Quantas tipos de drogas foram investigados<jupyter_code>dados['droga'].nunique() # FORAM INVESTIGADOS 3289 TIPOS DE DROGAS<jupyter_output><empty_output><jupyter_text>DESAFIO 05 Procurar na documentação o método query(pandas)<jupyter_code>dados_com_droga = dados.query("tratamento == 'com_droga'") # O MÉTODO QUERY NOS PERMITE UTILIZAR EXPRESSÕES PARA AUXILIAR NA BUSCA DE DADOS 
dados_com_droga['droga'].nunique()<jupyter_output><empty_output><jupyter_text>DESAFIO 06 Renomear as colunas tirando o hífen<jupyter_code># RESOLUÇÃO DESAFIO 06
colunas = dados.columns

renomeando = [name.replace('-', '') for name in colunas]

dados.columns = renomeando

dados<jupyter_output><empty_output><jupyter_text>DESAFIO 07 Deixar os gráficos bonitos (Matplotlib.pyplot)<jupyter_code>import matplotlib.pyplot as plt #IMPORTANDO A BIBLIOTECA MATLIB.PYPLOT

tratamento = dados['tratamento'].value_counts()
label = ['com drogra', 'com controle']
explode = [0, 0.3]
size = [50, 60]
colors = ['b', 'y']

plt.title('Classes tratamento')
plt.pie(tratamento, labels=label, explode=explode, colors = colors, autopct='%1.1F%%')
plt.legend(bbox_to_anchor=(1,1))
plt.show()
import matplotlib.pyplot as plt

%matplotlib inline
plt.figure(figsize = (10,6))
ax = dados['tempo'].value_counts().plot.bar(color=['r', 'g', 'b'])
plt.title("Doses ministradas por período")
plt.xlabel("Intervalo de horas",)
plt.ylabel("Quantidade de doses")
plt.xticks(rotation = 0)<jupyter_output><empty_output><jupyter_text>DESAFIO 08 Resumo do que você aprendeu com os dados  AULA 02 - IMERSÃO DE DADOS<jupyter_code>mapa = {'droga': 'composto'} # PEGANDO A COLUNA QUE QUEREMOS RENOMEAR
dados.rename(columns=mapa, inplace=True) # FAZENDO O RENAME, O INPLACE=TRUE RENOMEIA A COLUNA NA BASE DE DADOS
dados.head()
cod_compostos = dados['composto'].value_counts().index[0:5] # PEGANDO OS 5 PRIMEIROS COMPOSTOS E SALVANDO EM UMA VARIÁVEL
cod_compostos
dados.query('composto in @cod_compostos')
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
plt.figure(figsize=(8,6)) # ALTERANDO O TAMANHO DA IMAGEM
ax = sns.countplot(x= 'composto', data=dados.query('composto in @cod_compostos'))
ax.set_title('Top 5 Compostos')
plt.show()
len(dados['g0'].unique()) # QUANTOS ELEMENTOS UNICOS TEMOS EM g0  
dados['g0'].min() # VERIFICANDO O MENOR VALOR
dados['g0'].max() # VERIFICANDO O MAIOR VALOR
dados['g0'].hist(bins = 100)
dados['g19'].hist(bins = 100)
dados.describe()
dados[['g0', 'g1']]
dados.loc[:,'g0':'g771'].describe()
dados.loc[:,'g0':'g771'].describe().T['mean'].hist(bins=30) # TRANSPONDO OS DADOS, LINHAS VIRAM COLUNAS E COLUNAS VIRAM LINHAS
dados.loc[:,'g0':'g771'].describe().T['min'].hist(bins=30) # TRANSPONDO OS DADOS, LINHAS VIRAM COLUNAS E COLUNAS VIRAM LINHAS
dados.loc[:,'g0':'g771'].describe().T['max'].hist(bins=30) # TRANSPONDO OS DADOS, LINHAS VIRAM COLUNAS E COLUNAS VIRAM LINHAS
dados.loc[:,'c0':'c99'].describe().T['mean'].hist(bins=50) # TRANSPONDO OS DADOS, LINHAS VIRAM COLUNAS E COLUNAS VIRAM LINHAS
sns.boxplot(x='g0' , data=dados)
plt.figure(figsize=(10,8))
sns.boxplot(y='g0', x='tratamento' , data=dados)<jupyter_output><empty_output><jupyter_text>Desafio 01 :  Ordenar o gráfico countplot<jupyter_code>import seaborn as sns
import matplotlib.pyplot as plt

#cod_compostos = dados['composto'].value_counts().index[5:0:-1] # Decrescente
cod_compostos = dados['composto'].value_counts().index[0:5:1] # Crescente

sns.set()
plt.figure(figsize=(8,6)) # ALTERANDO O TAMANHO DA IMAGEM
data=dados.query('composto in @cod_compostos')
ax = sns.countplot(x= 'composto', data=data, order=cod_compostos)
ax.set_title('Top 5 Compostos')

plt.show()<jupyter_output><empty_output><jupyter_text>Desafio 02: Melhorar a visualização alterando o tamanho da fonte<jupyter_code>import seaborn as sns
import matplotlib.pyplot as plt

cod_compostos = dados['composto'].value_counts().index[5:0:-1] # Decrescente

sns.set()
plt.figure(figsize=(8,6)) # ALTERANDO O TAMANHO DA IMAGEM
data=dados.query('composto in @cod_compostos')

ax = sns.countplot(x= 'composto', data=data, order=cod_compostos)
ax.set_title('Top 5 Compostos', fontsize=25, color='red')
ax.set_ylabel('Contagem', fontsize=15, color='blue')
ax.set_xlabel('Composto', fontsize=15, color='blue')

plt.show()<jupyter_output><empty_output><jupyter_text>Desafio 03: Plotar os histogramas com seaborn<jupyter_code>celulas = dados.loc[:,'c0':'c99'].describe().T['mean']

plt.figure(figsize=(10,8))

hist = sns.histplot(data=celulas, bins=50)
hist.set_title('Células', fontsize=18, color='b')
hist.set_ylabel('Mediana', fontsize=12, color='g')
hist.set_xlabel('Contagem', fontsize=12, color='g')


plt.show()<jupyter_output><empty_output><jupyter_text>Desafio 04: Estudar sobre as estatisticas retornadas no .describre()count -> Contar o número de observações não nulas.max -> Máximo dos valores no objeto.min -> Mínimo dos valores no objeto.mean -> Média dos valores.std -> Desvio padrão das observações.select_dtypes -> Subconjunto de um DataFrame incluindo / excluindo colunas com base em seu dtype.  Desafio 05: Refletir sobre a manipulação do tamanho das visualizações  Desafio 06: Fazer outras análises com o boxplot e até com o histograma<jupyter_code>plt.figure(figsize=(14,12))

hist = sns.histplot(data=dados,bins=100, x='g0', hue='tempo', multiple="stack")
hist.set_title('Análise célular por tempo', fontsize=18, color='r')
hist.set_ylabel('Quantidade', fontsize='12', color='g')
hist.set_xlabel('Célula g0', fontsize='12', color='g')
plt.show()
plt.figure(figsize=(14,12))

hist = sns.histplot(data=dados,bins=100, x='c0', hue='tempo', multiple="stack")
hist.set_title('Análise celular por tempo', fontsize=18, color='r')
hist.set_ylabel('Quantidade', fontsize=12, color='g')
hist.set_xlabel('Célula c0', fontsize=12, color='g')
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13919052319842054, 'fraction_numerical': 0.023321816386969396, 'mean_word_length': 7.2958034800409415, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 60, 'https://': 1, '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': '13', 'dir': 'jupyter-structured-clean-dedup', 'id': '162156', 'license': 'MIT', 'n_tokens_mistral': 3447, 'n_tokens_neox': 3248, 'n_words': 700, 'path': 'aula/imersao_de_dados_alura.ipynb', 'repo_name': 'worldofmoon/imersao-de-dados', 'size': '8104'}