<jupyter_start><jupyter_text>Sala de exercício Alv<jupyter_code>from pathlib import Path

print(Path.cwd())
import pandas as pd
import seaborn as sns
import numpy as np
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
from IPython.display import display, clear_output, Image

import matplotlib.pyplot as plt

import plotly.offline as py
import datetime,calendar

%matplotlib inline

dfSE = pd.read_excel('../dados/_ALVSalaExercicio.xlsx',sheet_name='Sheet1')

## Preparação dos dados

cols = ['ID', 'E-mail', 'Nome', 'Pontuação total', 'Feedback do questionário',  'Pontos – Data',
        'Feedback – Data', 'Pontos – Hora', 'Feedback – Hora','Pontos – Número pessoas sexo feminino','Feedback – Número pessoas sexo feminino',
        'Pontos – Número pessoas sexo masculino','Feedback – Número pessoas sexo masculino', 'Pontos – Quantas pessoas cárdio?',
        'Feedback – Quantas pessoas cárdio?','Pontos – Quantas pessoas a fazerem abdominal?','Feedback – Quantas pessoas a fazerem abdominal?',
        'Pontos – Quantas pessoas ombros?','Feedback – Quantas pessoas ombros?', 'Pontos – Quantas pessoas peito?', 
        'Feedback – Quantas pessoas peito?','Pontos – Quantas pessoas costas?','Feedback – Quantas pessoas costas?',
        'Pontos – Quantas pessoas treino de pernas?','Feedback – Quantas pessoas treino de pernas?']
dfSE.drop(columns=cols, index=1, inplace=True)
dfSE.columns
dfSE.columns=['horaInicio','horaConclusao','data','hora','mulheres','homens','cardio','abdominal','ombros','peito','costas','pernas']

dfSE.fillna(0,inplace=True)

dfSE['mulheres']=dfSE['mulheres'].apply(lambda x:str(x).replace('"','0'))

dfSE.loc[dfSE['mulheres'].str.isalpha(),'mulheres'] = 0

# Criar uma coluna nova
dfSE.mulheres = dfSE.mulheres.astype(int)
dfSE['total']=dfSE.mulheres+dfSE.homens
#dfSE.head()

### Colocar tudo em ints

cols = ['mulheres', 'homens','cardio', 'abdominal', 'ombros', 'peito', 'costas', 'pernas', 'total']
for col in cols:
    dfSE[col] = dfSE[col].astype(int)

### Converter hora para tempo

dfSE['hora'] = pd.to_datetime(dfSE['hora'])

### Calcular só hora

#Vamos retirar as meias horas
dfSE['hora']=dfSE['hora'].apply(lambda x: x.hour)

### Calcular o dia da semana

# Por extenso
#dfSEAlv['diaSemana']=dfSEAlv['data'].apply(lambda x: x.day_name(locale='pt'))
# Vamos calcular o dia da semana 0 é segunda
dfSE['diaSemana']=dfSE['data'].apply(lambda x: x.weekday())

## Analise inicial

print('Data inicio: ',dfSE.data.min(),'Data fim:',dfSE.data.max())

#Os dados são referentes ao período entre data inicio e data fim. Vamos confirmar algums dados

#Vamos calcular totais e ordenar por hora
#dfSE.hora.value_counts().reset_index().sort_values('index')<jupyter_output>Data inicio:  2019-12-09 00:00:00 Data fim: 2020-02-03 00:00:00<jupyter_text>Número de clientes por horaA barra preta representa o intervalo de confiança com 95%, i.e. o número de clientes tem uma estimativa limite minimo e máximo por hora de acordo com o registos nessa hora<jupyter_code>dataInicio=dfSE.data.min()
dataFim=dfSE.data.max()

#py.init_notebook_mode()

dados=dfSE[(dfSE.data>=pd.to_datetime(dataInicio.value)) & (dfSE.data<=pd.to_datetime(dataFim.value))]
funcao = [('soma',np.sum),('media',np.mean),('mediana',np.median), ('máx',np.max) ,('min',np.min)]
def f(var,funcao):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.barplot(x='hora',y=var,data=dados,palette='rainbow',estimator=funcao).set_title('Sala exercício Alverca - '+var)
    plt.xticks(np.arange(15),(7,  8,  9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 16))
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols, funcao=funcao);<jupyter_output><empty_output><jupyter_text>Representação com boxplots do número de clientes 1. Está representado a mediana em todas as horas - barra verde2. Quartil 1 e Quartil 33. Outliers todos os valores superiores a Q3 + ((Q3-Q1)*3) e inferiores a Q1 - ((Q3 - Q1) * 3)<jupyter_code>def f(var):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.boxplot(x='hora',y=var,data=dfSE,palette='rainbow').set_title('Sala exercício Alverca - '+var)
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols);<jupyter_output><empty_output><jupyter_text>Quantas pessoas por dia da semana?<jupyter_code>#0 é segunda-feira 6 é domingo https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeIndex.weekday.html

funcao = [('soma',np.sum),('media',np.mean),('mediana',np.median), ('máx',np.max) ,('min',np.min)]
def f(var,funcao):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.lineplot(x='diaSemana',y=var,data=dfSE,palette='rainbow',estimator=funcao).set_title('Sala exercício Alverca - '+var)
    plt.xticks(np.arange(7),('seg','ter','qua','qui','sex','sab','dom'))
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols, funcao=funcao);
dfMelt=pd.melt(dfSE,id_vars=['hora'],value_vars=cols,var_name='exercicio')

plt.rcParams['figure.figsize'] = [15, 7]
sns.lineplot(x='hora',y='value',hue='exercicio',data=dfMelt,palette='rainbow',estimator='mean',ci=0).set_title('Sala de exercicio - Soma');
fig = plt.gcf()<jupyter_output><empty_output><jupyter_text>Dados recolhidos sala de exercício Rio Maior<jupyter_code>dfSEAlv = dfSE.copy() # Fazer uma cópia deste dataframe
dfSERM = pd.read_excel('../dados/_RMSalaExercicio.xlsx',sheet_name='Sheet1')

## Preparação dos dados

cols = ['ID', 'E-mail', 'Nome', 'Pontuação total', 'Feedback do questionário',  'Pontos – Data',
        'Feedback – Data', 'Pontos – Hora', 'Feedback – Hora','Pontos – Número pessoas sexo feminino','Feedback – Número pessoas sexo feminino',
        'Pontos – Número pessoas sexo masculino','Feedback – Número pessoas sexo masculino', 'Pontos – Quantas pessoas cárdio?',
        'Feedback – Quantas pessoas cárdio?','Pontos – Quantas pessoas a fazerem abdominal?','Feedback – Quantas pessoas a fazerem abdominal?',
        'Pontos – Quantas pessoas ombros?','Feedback – Quantas pessoas ombros?', 'Pontos – Quantas pessoas peito?', 
        'Feedback – Quantas pessoas peito?','Pontos – Quantas pessoas costas?','Feedback – Quantas pessoas costas?',
        'Pontos – Quantas pessoas treino de pernas?','Feedback – Quantas pessoas treino de pernas?']
dfSERM.drop(columns=cols, index=1, inplace=True)
dfSERM.columns
dfSERM.columns=['horaInicio','horaConclusao','data','hora','mulheres','homens','cardio','abdominal','ombros','peito','costas','pernas']

dfSERM.fillna(0,inplace=True)

# Criar uma coluna nova
dfSERM.mulheres = dfSERM.mulheres.astype(int)
dfSERM['total']=dfSERM.mulheres+dfSERM.homens
#dfSE.head()

dfSERM['ombros']=dfSERM['ombros'].apply(lambda x:str(x).replace('O','0'))

### Colocar tudo em ints

cols = ['mulheres', 'homens','cardio', 'abdominal', 'ombros', 'peito', 'costas', 'pernas', 'total']
for col in cols:
    dfSERM[col] = dfSERM[col].astype(int)

### Converter hora para tempo

dfSERM['hora'] = pd.to_datetime(dfSERM['hora'])

### Calcular só hora

#Vamos retirar as meias horas
dfSERM['hora']=dfSERM['hora'].apply(lambda x: x.hour)

### Calcular o dia da semana

# Por extenso
#dfSEAlv['diaSemana']=dfSEAlv['data'].apply(lambda x: x.day_name(locale='pt'))
# Vamos calcular o dia da semana 0 é segunda
dfSERM['diaSemana']=dfSERM['data'].apply(lambda x: x.weekday())

## Analise inicial

print('Data inicio: ',dfSE.data.min(),'Data fim:',dfSE.data.max())

plt.rcParams['figure.figsize'] = [15, 7]<jupyter_output>Data inicio:  2019-12-04 00:00:00 Data fim: 2020-02-03 00:00:00<jupyter_text>Número de clientes por horaA barra preta representa o intervalo de confiança com 95%, i.e. o número de clientes tem uma estimativa limite minimo e máximo por hora de acordo com o registos nessa hora<jupyter_code>dataInicio=dfSERM.data.min()
dataFim=dfSERM.data.max()

#py.init_notebook_mode()

dados=dfSERM[(dfSERM.data>=pd.to_datetime(dataInicio.value)) & (dfSERM.data<=pd.to_datetime(dataFim.value))]
funcao = [('soma',np.sum),('media',np.mean),('mediana',np.median), ('máx',np.max) ,('min',np.min)]
def f(var,funcao):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.barplot(x='hora',y=var,data=dados,palette='rainbow',estimator=funcao).set_title('Sala exercício Rio Maior - '+var)
    plt.xticks(np.arange(15),(7,  8,  9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 16))
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols, funcao=funcao);<jupyter_output><empty_output><jupyter_text>Representação com boxplots do número de clientes 1. Está representado a mediana em todas as horas - barra verde2. Quartil 1 e Quartil 33. Outliers todos os valores superiores a Q3 + ((Q3-Q1)*3) e inferiores a Q1 - ((Q3 - Q1) * 3)No total os outliers representam valores superiores a 15 são com mais procura na sala de exercício<jupyter_code>def f(var):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.boxplot(x='hora',y=var,data=dfSERM,palette='rainbow').set_title('Sala exercício Rio Maior - '+var)
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols);<jupyter_output><empty_output><jupyter_text>Quantas pessoas por dia da semana?<jupyter_code>#0 é segunda-feira 6 é domingo https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeIndex.weekday.html

funcao = [('soma',np.sum),('media',np.mean),('mediana',np.median), ('máx',np.max) ,('min',np.min)]
def f(var,funcao):
    plt.rcParams['figure.figsize'] = [15, 4]
    sns.lineplot(x='diaSemana',y=var,data=dfSERM,palette='rainbow',estimator=funcao).set_title('Sala exercício Rio Maior - '+var)
    plt.xticks(np.arange(7),('seg','ter','qua','qui','sex','sab','dom'))
    fig = plt.gcf() # "Get current figure"
    plt.show()
    #py.iplot_mpl(fig)

interact(f, var=cols, funcao=funcao);
dfMelt=pd.melt(dfSERM,id_vars=['hora'],value_vars=cols,var_name='exercicio')

plt.rcParams['figure.figsize'] = [15, 7]
sns.lineplot(x='hora',y='value',hue='exercicio',data=dfMelt,palette='rainbow',estimator='mean',ci=0).set_title('Sala de exercicio - Soma');
fig = plt.gcf()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1697148475909538, 'fraction_numerical': 0.01887905604719764, 'mean_word_length': 5.886255924170616, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '329584', 'license': 'MIT', 'n_tokens_mistral': 4235, 'n_tokens_neox': 3992, 'n_words': 851, 'path': 'analysis/.ipynb_checkpoints/3.salaExercicio_analise-checkpoint.ipynb', 'repo_name': 'pesobreiro/jupyternotebooks', 'size': '10170'}