<jupyter_start><jupyter_text>SME0828 - Introdução à Ciência de Dados Projeto 2: Análise exploratória dos dados  <NAME>, Nº USP: 9437275<NAME>, Nº USP: 10276675<NAME>, Nº USP: 10276661 ***Universidade de São Paulo, São Carlos, Brasil.***  Exercícios sugeridos para a atividade avaliativa 2 (PROVISÓRIO)Os seguintes exercícios foram sugeridos para entrega em 21 de setembro de 2020 para a disciplina SME0828 oferecida pelo Instituto de Ciências Matemáticas e de Computação (ICMC) da Universidade de São Paulo (USP), a qual foi ministrada pelo professor <NAME>. Tal atividade visa aplicar diferentes técnicas de preparação de dados em Python com o intuito de deixá-los mais suscetíveis a análises estatísticas e computacionais. O conjunto de dados que será mais utilizado é o famoso conjunto [Iris](https://pt.wikipedia.org/wiki/Conjunto_de_dados_flor_IrisConjunto_de_dados).  Desenvolvimento  1 - Gere dados a partir de uma distribuição de Poisson. Varie a taxas $\lambda$ no intervalo [1,10] e mostre o gráfico da média em função da variância.<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import random
import math


#gerando os dados
k = np.linspace(0,100,101)
#lambdas no intervalo [1,10]
lambda1 = 1
lambda2 = 2
lambda3 = 3
lambda4 = 4
lambda5 = 5
lambda6 = 6
lambda7 = 7
lambda8 = 8
lambda9 = 9
lambda10 = 10
f1 = []
f2 = []
f3 = []
f4 = []
f5 = []
f6 = []
f7 = []
f8 = []
f9 = []
f10 = []


for i in range(len(k)):
    f1.append(((lambda1**k[i])*np.exp(-1.0*lambda1))/math.factorial(k[i]))
    f2.append(((lambda2**k[i])*np.exp(-1.0*lambda2))/math.factorial(k[i]))
    f3.append(((lambda3**k[i])*np.exp(-1.0*lambda3))/math.factorial(k[i]))
    f4.append(((lambda4**k[i])*np.exp(-1.0*lambda4))/math.factorial(k[i]))
    f5.append(((lambda5**k[i])*np.exp(-1.0*lambda5))/math.factorial(k[i]))
    f6.append(((lambda6**k[i])*np.exp(-1.0*lambda6))/math.factorial(k[i]))
    f7.append(((lambda7**k[i])*np.exp(-1.0*lambda7))/math.factorial(k[i]))
    f8.append(((lambda8**k[i])*np.exp(-1.0*lambda8))/math.factorial(k[i]))
    f9.append(((lambda9**k[i])*np.exp(-1.0*lambda9))/math.factorial(k[i]))
    f10.append(((lambda10**k[i])*np.exp(-1.0*lambda10))/math.factorial(k[i]))
    

plt.plot(k,f1,label=r'$\lambda$=1')
plt.plot(k,f2,label=r'$\lambda$=2')
plt.plot(k,f3,label=r'$\lambda$=3')
plt.plot(k,f4,label=r'$\lambda$=4')
plt.plot(k,f5,label=r'$\lambda$=5')
plt.plot(k,f6,label=r'$\lambda$=6')
plt.plot(k,f7,label=r'$\lambda$=7')
plt.plot(k,f8,label=r'$\lambda$=8')
plt.plot(k,f9,label=r'$\lambda$=9')
plt.plot(k,f10,label=r'$\lambda$=10')
plt.xlabel('k')
plt.ylabel('P(X=k)')
plt.legend()
plt.tight_layout()<jupyter_output><empty_output><jupyter_text>Dado que na poisson a média é o lambda e a variância também, a medida que aumentamos o valor do lambda a curva fica mais achatada. Sabendo que elas são igual podemos também fazer um gráfico da média em função da variância ou mesmo usando outro método para ajuste do gráfico entre as duas como abaixo:<jupyter_code>! pip install -U plotly
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import plotly.offline as py
import plotly.graph_objs as go
import plotly.express as px
import plotly.io as pio
lam = 10  
n = 100000000
media = []  
var = []
for i in range(1,lam+1):
  media.append(np.mean(np.random.poisson(i,n)))
  var.append(np.var(np.random.poisson(i,n)))
pio.templates.default = "none"
fig = px.scatter(
    x=media, y=var, trendline='ols', trendline_color_override='#831B77')

fig.update_layout(title = 'Média em função da variância', 
                  xaxis_title='Média', yaxis_title='Variância',
                  font_size = 17,title_font_size = 17,
                  xaxis_title_font_size = 17,
                  yaxis_title_font_size = 17)
fig.show()<jupyter_output><empty_output><jupyter_text>2 - Considere os dados da Iris. Calcule a média, variância e IQR para cada atributo.<jupyter_code>import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
import pandas as pd
import statistics

data = pd.read_csv('C:/Users/User.NAT-A-RACCOON/Desktop/ciencia/data/iris.csv', header=(0))
print("Número de linhas e colunas:",data.shape)
#descrevendo as variáveis e extraindo a média
data.describe()<jupyter_output><empty_output><jupyter_text>Podemos extrair informações da média através da tabela de estatística descritiva ou através dos calculos como mostrado a seguir:<jupyter_code>#média 
np.mean(data)
#Variância
np.var(data)
iqrs = []

for i in range(4):
  q1 = data.iloc[:,i].quantile(0.25)
  q3 = data.iloc[:,i].quantile(0.75)
  iqrs.append(np.round(q3 - q1,3))
  
iqrs<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1500107457554266, 'fraction_numerical': 0.04319793681495809, 'mean_word_length': 4.951406649616368, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '519939', 'license': 'MIT', 'n_tokens_mistral': 1985, 'n_tokens_neox': 1864, 'n_words': 426, 'path': 'Projects/2 - Análise exploratória de dados/Projeto2_Analise_Exploratoria_dos_dados_A.ipynb', 'repo_name': 'Brenoslivio/SME0828_DataScience', 'size': '4744'}