import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from scipy.stats import chi2_contingency
import statsmodels.api as sm
from statsmodels.formula.api import ols
%matplotlib inline
sns.set_style('white')
train=pd.read_csv('data/train.csv')
test=pd.read_csv('data/test.csv') 
for i in [train, test]:
    i['date'] = pd.to_datetime(i['date'], format = "%Y/%m/%d")
    
    # Gestion des valeurs manquantes catégorielles
    i['cheveux'] = i['cheveux'].fillna(i['cheveux'].mode()[0])
    i['sexe'] = i['sexe'].fillna(i['sexe'].mode()[0])
    i['diplome'] = i['diplome'].fillna(i['diplome'].mode()[0])
    i['specialite'] = i['specialite'].fillna(i['specialite'].mode()[0])
    i['dispo'] = i['dispo'].fillna(i['dispo'].mode()[0])
    
    # Gestion des valeurs manquantes numériques 
    i['age'] = i['age'].fillna(i['age'].mean())
    i['exp'] = i['exp'].fillna(i['exp'].mean())
    i['salaire'] = i['salaire'].fillna(i['salaire'].mean())
    i['note'] = i['note'].fillna(i['note'].mean())
    
    # Gestion des outliers
    i['exp'] = np.where(i['exp'] < 0, i['age'] - 20, i['exp'])
    i['age'] = np.where(i['age'] < 16, i['exp'] + 20, i['age'])
    i['AGE_BINNED'] = pd.cut(i['age'], bins = np.linspace(16, 74, num = 11))
    i['EXP_BINNED'] = pd.cut(i['exp'], bins = np.linspace(0, 23, num = 7))
Questions ML1 :
1. Décrivez le jeu de données
2. Y a-t-il une dépendance statistiquement significative entre :
pd.crosstab(train.specialite, train.sexe)
g, p, dof, expctd = chi2_contingency(pd.crosstab(train.specialite, train.sexe))
g, p
sns.boxplot(x="cheveux", y="salaire", data=train)
fit = ols('salaire ~ cheveux', data = train).fit()
fit.summary()
sm.stats.anova_lm(fit, typ=1)
sns.lmplot(x="exp", y="note", data=train )
ols("note ~ exp", train).fit().summary()