Buscar

arquivo PY - prova final

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

# -*- coding: utf-8 -*-
"""Untitled5.ipynb
Automatically generated by Colaboratory.
Original file is located at
 https://colab.research.google.com/drive/1imA7HZUSE13aBOaz-G7bPJuc5FMc5cmD
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
sns.set_theme()
"""# DATASETS"""
df_estados = pd.read_csv('https://raw.githubusercontent.com/ProfLeandroLessa/classroom-datasets/master/CID/Desafio%20Final/estados_brasileiros.csv', sep=';', encoding = 'iso-8859-1')
df_pacientes = pd.read_csv('https://raw.githubusercontent.com/ProfLeandroLessa/classroom-datasets/master/CID/Desafio%20Final/dados_pacientes.csv', sep=';', encoding = 'iso-8859-1')
df_medicos = pd.read_excel('https://github.com/ProfLeandroLessa/classroom-datasets/raw/master/CID/Desafio%20Final/dados_medicos.xlsx')
df_estados.head()
df_pacientes.head()
df_medicos.head()
df_estados.info()
df_pacientes.info()
df_medicos.info()
"""# Unindo os dados dos três datasets"""
df_final = pd.merge(df_pacientes, df_estados, left_on='id_estado', right_on='id_estado', how='inner')
df_final = pd.merge(df_final, df_medicos, left_on='id_cliente', right_on='id_cliente', how='inner')
df_final.head()
df_final.info()
df_final.isna().sum()
df_final['peso'] = df_final['peso'].fillna(df_final['peso'].mean())
"""# Questões do Desafio Final
2 - Qual é a idade média das pessoas que residem no estado de Minas Gerais?
"""
idade_media_mg = df_final[df_final['sigla_estado'] == 'MG']['idade'].mean()
print(f"A idade média das pessoas que residem no estado de Minas Gerais é {idade_media_mg:.2f} anos.")
"""Pergunta 4 - Crie um gráfico de caixa (boxplot) para representar a distribuição da renda por gênero das pessoas que residem no estado de Minas Gerais e, em seguida, responda qual é o gênero que possui maior mediana da renda representado no gráfico de caixa?"""
df_mg = df_final[df_final['sigla_estado'] == 'MG']
# Criar o gráfico de caixa
plt.figure(figsize=(8, 6))
sns.boxplot(y='renda', x='genero', data=df_mg, hue='genero')
plt.title('Distribuição da Renda por Gênero - Estado de Minas Gerais')
plt.xlabel('Gênero')
plt.ylabel('Renda')
plt.grid(True)
plt.show()
# Identificar o gênero com maior mediana da renda
mediana_renda_por_genero = df_mg.groupby('genero')['renda'].median()
genero_maior_mediana = mediana_renda_por_genero.idxmax()
mediana_maior = mediana_renda_por_genero.max()
print(f"O gênero que possui maior mediana da renda é {genero_maior_mediana} com uma mediana de renda de R${mediana_maior:.2f}.")
"""Pergunta 6 - Crie um gráfico de caixa (boxplot) para representar as idades das pessoas que possuem níveis de educação superior, categorizadas por seu estado civil. Em seguida, escolha o gráfico que melhor representa essa distribuição."""
df_ensino_superior = df_final[df_final['nivel_educacao'] == 'Superior']
# Criar o gráfico de caixa
plt.figure(figsize=(12, 8))
sns.set(style="darkgrid")
sns.boxplot(x='idade', y='estado Civil', data=df_ensino_superior, hue='estado Civil')
plt.title('Idades das Pessoas com Nível de Educação Superior por Estado Civil')
plt.xlabel('Idade')
plt.ylabel('Estado Civil')
plt.grid(True)
plt.show()
"""Pergunta 7 - Calcule estatísticas descritivas para a variável "colesterol" agrupadas por nível de educação. Em seguida, com base nas estatísticas calculadas, escolha a alternativa CORRETA."""
estatisticas_colesterol = df_final.groupby('nivel_educacao')['colesterol'].describe()
print(estatisticas_colesterol)
moda_colesterol = df_final.groupby('nivel_educacao')['colesterol'].apply(pd.Series.mode)
print(moda_colesterol)
"""Pergunta 8 - Crie um histograma com 20 barras representando o peso das pessoas. Em seguida, com base no histograma gerado, escolha a alternativa que melhor descreve a distribuição dos pesos."""
# Criar o histograma
plt.figure(figsize=(15, 10))
df_final['peso'].hist(bins=20, color='blue', edgecolor='black', alpha=0.7)
plt.title('Histograma de Peso das Pessoas')
plt.xlabel('Peso')
plt.ylabel('Frequência')
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
"""Pergunta 9 - Qual é o estado cujo residente possui a maior renda, e qual é o estado civil dessa pessoa?"""
df_final.loc[df_final['renda'].idxmax()]
"""Pergunta 10 - Crie um gráfico de dispersão que represente as relações entre as variáveis peso (eixo x) e colesterol (eixo y) e selecione o gráfico que melhor ilustra essa relação."""
# Criar o gráfico de dispersão
plt.figure(figsize=(10, 8))
sns.scatterplot(data=df_final, x='peso', y='colesterol', alpha=0.6)
plt.title('Relação entre Peso e Colesterol')
plt.xlabel('Peso')
plt.ylabel('Colesterol')
plt.grid(True)
plt.show()
"""Pergunta 11 - Ao aplicar um modelo de regressão linear usando machine learning, responda à seguinte pergunta: Qual é o valor estimado de colesterol para uma pessoa que possui um peso de 128 quilos, com base no mode"""
# Retirando as colunas que não serão utilizada no modelo
X = df_final['peso'].values.reshape(-1, 1)
y = df_final['colesterol'].values.reshape(-1, 1)
# Separando os dados de teste e de treino
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
r_sq = model.score(X, y)
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
valor_previsto = model.predict(np.array([[128.0]]))
coef_angular = model.coef_[0][0]
coef_determinacao = r_sq
print('Valor previsto: {:0.2f}'.format(model.predict(np.array([128.0]).reshape(-1, 1))[0][0]))
print('Acurácia: {:0.2f}'.format(r2_score(y_test,y_pred)))
print('Coeficiente angular da reta: {:0.2f}'.format(model.coef_[0][0]))
print('Coeficiente de Determinação (R²): {:0.2f}'.format(r_sq))
print('MAE: {:0.2f}'.format(mae))
print('MSE: {:0.2f}'.format(mse))
"""Pergunta 12 - Qual é o valor do coeficiente angular da reta?"""
# Coeficiente angular da reta
coef_angular = model.coef_[0][0]
print('Coeficiente angular da reta: {:0.2f}'.format(coef_angular))
"""Pergunta 13 - Qual foi o coeficiente de determinação R² do modelo?"""
# Coeficiente de determinação (R²)
r_squared = model.score(X, y)
print('Coeficiente de Determinação (R²): {:0.2f}'.format(r_squared))
"""Pergunta 14 - Qual o valor do mean absolute error do modelo criado?"""
# Calculando o Mean Absolute Error (MAE)
mae = mean_absolute_error(y, y_pred)
print('MAE: {:0.2f}'.format(mae))
"""Pergunta 15 - Qual o valor do mean squared error do modelo criado?"""
# Mean Squared Error (MSE)
mse = mean_squared_error(y, y_pred)
print('MSE: {:0.2f}'.format(mse))

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais