Adrien est né le 28 décembre 2004. Il est fils unique. Sa mère est secrétaire juridique et son père est ingénieur. Adrien est un petit garçon coquin, qui aime faire des blagues, surtout à son chat.
Adrien a un développement linguistique typique et adore répéter les nouveaux mots. Naomi Yamaguchi l’a filmé une heure par mois depuis qu’il a 15 mois et arrêté les enregistrements à 4;11,20.
Récupèrer la liste des noms de fichier pour Julie :
import os
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
import matplotlib.pyplot as plt
import chardet
#print(os.getcwd())
#os.chdir('C:\\Users\\lamou\\Desktop\\MIASHS\\TER_a\\data\\adrien_texte')
#listing=os.listdir() # On crée une liste de tout les noms des fichiers
#listing.sort()
#listing
len(listing)
Nous avons 31 fichiers pour Adrien, chacun de ces fichiers corresepondent aux retrancriptions d'un enregistrement vidéo.
os.chdir('C:\\Users\\Lamou\\Desktop\\MIASHS\\TER_a\\data\\adrien_texte')
d = {} # Le dictionnaire contenant les noms des fichiers
nom_col = ['type', 'seconde_debut', 'seconde_fin', 'contenu']
rows = 0 #Compteur de ligne pour vérifier la perte de données
for file in listing:
d[file]=pd.read_csv(file,
sep = '\t',
names = nom_col,
header = None)
# On ajoute le nom de l'enfant
nom_pos1 = 0
nom_pos2 = file.find('-')
nom = file[nom_pos1:nom_pos2]
d[file]['enfant'] = nom
#On ajoute l'age de l'enfant
age_pos1 = file.find('_')-1
age_pos2 = file.find('.')
age = file[age_pos1:age_pos2]
d[file]['age'] = age
rows += len(d[file])
# DataFrame contenant toutes les lignes de l'enfant
data = pd.concat([d[file] for file in listing],
sort=False,
ignore_index=True)
#data.shape
On vérifie qu'il y a autant de ligne lu (variable rows) que de ligne écritent (len(data))
print(rows == len(data))
data=data[['enfant', 'age','type', 'seconde_debut', 'seconde_fin', 'contenu']]
data.head()
# Création du fichier enfant
os.chdir('C:\\Users\\Lamou\\Desktop\\MIASHS\\TER_a\\data')
data.to_csv('data_adrien_final.csv',
encoding = 'utf-8',
sep = '\t',
header = True)
On peut maintenant utiliser le fichier 'data_adrien_final.csv' pour l'exploration de données.
data_child = pd.read_csv('..\data\data_adrien_final.csv',
sep = '\t',
encoding = 'utf-8',
index_col=False)
# On supprime la colonne qui duplique les index
data_child = data_child.drop(columns = 'Unnamed: 0')
data_child.shape
Qu'elles sont les différents type de ligne ?
print(len(data_child['type'].unique()))
Il existe 16 types de ligne dans les fichiers Andrien :
print(data_child['type'].unique())
Les lignes de type 'pho' correspondent à la traduction phonétique lorsque d'Adrien s'exprime :
pho_child = data_child[data_child['type'] == 'pho']
pho_child.head(10)
Il n'existe pas de valeur NaN dans la colonne contenu
pho_child.loc[pho_child['contenu'].isna()]
Nous allons chercher à visualiser la quantité phonétique de données à disposition
On considère que la colonne age a pout format : x_xx_xx (année_mois_jour) ainsi :
pho_child['age'][0:1]
nous donne le nombre d'annéepho_child['age'][2:4]
nous donne le nombre de moispho_child['age'][5:7]
nous donne le nombre de jours# Ajout du nombre d'année
année_pho_child = pho_child.apply(lambda row: row['age'][0:1], axis=1)
pho_child['année'] = année_pho_child
# Ajout du nombre de mois
mois_pho_child = pho_child.apply(lambda row: row['age'][2:4], axis=1)
pho_child['mois'] = mois_pho_child
# Ajout du nombre de jour
jour_pho_child = pho_child.apply(lambda row: row['age'][5:7], axis=1)
pho_child['jour'] = jour_pho_child
#pho_child
Combien avons-nous de ligne pour chaque année ? mois ? jour ?
nb_phrase_annee = pho_child[{'année','contenu'}].groupby('année').count()
nb_phrase_annee.rename(columns={'contenu': 'nb_phrase'})
plt = nb_phrase_annee.plot(kind='bar',
subplots=True,
figsize=(10,5),
title = 'Nombre de phrases phonétiques retranscritent par année : Adrien',
fontsize = 15,
use_index = True)
On voit qu'il y a des quantités de données phonétiques différentes pour chaques années :
Regardons plus en détail la quantité de données phonétiques par mois :
nb_phrase_mois = pho_child[{'année','mois','contenu'}].groupby(['année','mois']).count()
nb_phrase_mois = nb_phrase_mois.rename(columns={'contenu': 'nb_phrase'})
nb_phrase_mois.unstack(level=1)
Nous avons que peu de lignes pour les mois :
On voit aussi qu'il y a des mois sans données, cela vérifie qu'il y ait moins de données pour les années 0 et 4, en effet les retranscriptions s'arrête à l'age 4,03,xx
plt = nb_phrase_mois.unstack(level=0).plot(kind='bar',
subplots=True,
figsize=(20, 20),
title = 'Nombre de phrases phonétiques retranscritent par mois : Adrien',
fontsize = 15,
use_index = True)
On voit que les enregistrements d'Adrien s'arretent à l'age de 4 ans et 4 mois.
plt = nb_phrase_mois.plot(kind='bar',
subplots=True,
figsize=(20, 10),
title = 'Nombre de phrases phonétiques retranscritent par mois : Adrien',
fontsize = 15,
use_index = True)
Regardons maintenant la quantité de données par jours :
nb_phrase_jour = pho_child[{'année','mois', 'jour', 'contenu'}].groupby(['année','mois', 'jour']).count()
nb_phrase_jour = nb_phrase_jour.rename(columns={'contenu': 'nb_phrase'})
#nb_phrase_jour
plt = nb_phrase_jour.plot(kind='bar',
subplots=True,
figsize=(20, 10),
title = 'Nombre de phrases phonétiques retranscritent par jour : Adrien',
fontsize = 15,
use_index = True)
De cette manière la distribution de la quantité de données phonétiques n'est pas continu. En effet nous avons découpé les données de tel sorte à avoir la quantité de données pour chaque enregistrement d'Adrien. On remarque que les valeurs fluctu : il serait interressant d'observer de plus près pour connaitre les raisons de cette fluctuation :
De plus elle n'est pas distribué de manière équitable dans le temps.
On peut difficilement mesurer la croissance du nombre de prise de parole (on pourrait croiser cette donnée avec la durée de l'enregistrement pour une meilleure mesure).
On a maintenant une meilleure vision de la quantité de données phonétiques à disposition et de leur répartition dans le temps pour Adrien.
Nous allons chercher à explorer le nombre de mot au sens phonétique par phrase.
Pour cela on peut compter le nombre d'espace dans la chaîne de caractère :
# Exemple
pho = pho_child.at[74089, 'contenu']
print('Nombre de mot dans "' + pho + ' : '+ str(pho.count(' ')+1))
Pour chaque ligne on calcul le nombre de mot phonétique :
nb_mot_pho = pho_child.apply(lambda row: row['contenu'].count(' ')+1, axis=1)
pho_child['nombre_mot_phonétique'] = nb_mot_pho #On ajoute une colonne contenant le nombre de mot
Par exemple on peut avoir la phrase de Julie avec le plus grand nombre de mot :
a = pho_child.loc[pho_child['nombre_mot_phonétique'] == pho_child['nombre_mot_phonétique'].max()].contenu.values
print(a)
print('longueur: '+str(str(a).count(' ')+1))
Voici la ligne de cette phrase :
pho_child.loc[pho_child['nombre_mot_phonétique'] == 49 ]
Il est intéressant d'observer le nombre de mot moyen que contient les phrases. C'est un indicateur qui peut nous aiguiller sur l'explosion du lexicale de l'enfant.
mean_nb_mot_pho_jour = pho_child[{'année', 'mois', 'jour', 'nombre_mot_phonétique'}].groupby(['année', 'mois', 'jour']).mean()
mean_nb_mot_pho_jour = mean_nb_mot_pho_jour.rename(columns={'nombre_mot_phonétique': 'espérance_nombre_de_mot_phonétique'})
#mean_nb_mot_pho_jour
plt = mean_nb_mot_pho_jour.plot(kind='bar',
subplots=True,
figsize=(20, 13),
title = 'Espérance du nombre de mots phonétiques par jours : Adrien',
fontsize = 15,
use_index = True,
grid=True)
On constaste une distribution de l'espérance étrange :
Il peut être aussi intéressant d'observer la variance du nombre de mot par phrase de Léonard.
var_nb_mot_pho_jour = pho_child[{'année','mois','jour', 'nombre_mot_phonétique'}].groupby(['année','mois', 'jour']).var()
var_nb_mot_pho_jour = var_nb_mot_pho_jour.rename(columns={'nombre_mot_phonétique': 'variance'})
#var_nb_mot_pho_jour
plt = var_nb_mot_pho_jour.plot(kind='bar',
subplots=True,
figsize=(15, 7),
title = 'Variance du nombre de mot phonétique par jours : Adrien',
fontsize = 15,
use_index = True,
grid=True)
max_mot_pho_child = pho_child[{'année','mois','jour', 'nombre_mot_phonétique'}].groupby(['année','mois','jour']).max()
max_mot_pho_child = max_mot_pho_child.rename(columns={'nombre_mot_phonétique': 'longueur_max'})
#max_mot_pho_child
plt = max_mot_pho_child.plot(kind='bar',
subplots=True,
figsize=(20, 20),
title = 'Longueur de la plus grande par jour : Antoine',
fontsize = 15,
use_index = True,
grid=True)
On constate encore une distribution étrange qui est lié avec l'espérance.
#Exemple: selection des phrases de 12 mots à l'age 2,xx,xx
#pho_child.loc[pho_child['année'] == '2'].loc[pho_child.loc[pho_child['année'] == '2']['nombre_mot_phonétique'] == 12]