import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
import numpy as np
import seaborn as sns
# Conjunto de dados TechTaste
df_techtaste = pd.DataFrame({'avaliacoes': [38, 44, 33, 42, 47, 33, 36, 39, 42, 36, 39, 34, 42, 42, 36, 43, 31, 35, 36, 41, 42, 30, 25, 38, 47, 36, 32, 45, 44, 45, 37, 48, 37, 36, 44, 49, 31, 45, 45, 40, 36, 50, 38, 34, 36, 42, 46, 49, 36, 34, 38, 31, 53, 40, 57, 40, 36, 42, 26, 50, 32, 43, 35, 37, 42, 30, 36, 43, 40, 43, 44, 52, 37, 51, 35, 47, 40, 50, 37, 49]})
Obtendo a quantidade de dados disponíveis.
contagem = df_techtaste['avaliacoes'].value_counts().sort_index()
Extraindo descrições estatísticas dos dados.
# Desvio padrão.
desvio_padrao = df_techtaste['avaliacoes'].std()
# Erro padrão.
erro_padrao = stats.sem(df_techtaste['avaliacoes'])
# Outra forma.
erro_pad = df_techtaste['avaliacoes'].std()/np.sqrt(80)
# Erro padrão amostral da média.
media = df_techtaste['avaliacoes'].mean()
print(f'Desvio padrão: {desvio_padrao:.2f}\nErro padrão: {erro_padrao:.2f}\nMédia: {media:.2f}\nErro padrão alternativo: {erro_pad:.2f}')
Verificando o histograma dos dados.
plt.hist(df_techtaste, bins=30, alpha=0.7, color='orange')
plt.title('Avaliação dos clientes',fontsize=17)
plt.ylabel('Frequência', fontsize=13)
plt.xlabel('Notas', fontsize=13)
plt.show()
Índice de confiança para 14 desvios padrão.
sns.kdeplot(df_techtaste['avaliacoes'], linewidth=2, fill= True)
plt.xlabel('Notas')
plt.ylabel('Frequência',)
plt.title('Contorno da distribuição')
plt.axvline(media-14*erro_pad)
plt.axvline(media+14*erro_pad)
xmin, xmax = plt.xlim()
plt.fill_betweenx(np.linspace(0, max(stats.norm.pdf(np.linspace(media-3*desvio_padrao, media+3*desvio_padrao, 100))), 100), media-14*erro_pad, media+14*erro_pad, color='red', alpha=0.1)
# Adicionar descrição
descricao = str(perc_obs) + '%'
plt.text(media, plt.ylim()[1]*0.3, descricao, fontsize=20, color='red', fontweight='bold', ha='center')
plt.show()
Obtendo o intervalo para 90% de confiança.
n_conf = 0.9
intervalo = stats.norm.interval(n_conf, loc= df_techtaste['avaliacoes'].mean(), scale= erro_padrao)
print(intervalo)