diff --git a/src/old_coding_weeks/emotions_fct.py b/src/old_coding_weeks/emotions_fct.py
new file mode 100644
index 0000000000000000000000000000000000000000..e502aa86cc64c7c7dbbb8fccb2b571c3d489660a
--- /dev/null
+++ b/src/old_coding_weeks/emotions_fct.py
@@ -0,0 +1,77 @@
+
+"""
+    Ce programme permet d'analyser un dataframe de tweet (sentiments)
+    et de renvoyer des dataframes prêt à la visualisation
+"""
+import math
+import pandas as pd
+from nrclex import NRCLex
+from textblob import TextBlob
+
+
+def emo_analysis(dataframe):
+    """Analyse les sentiments présents dans les tweets fournis
+
+    Args:
+        dataframe (dataframe): dataframe avec les tweets
+
+    Returns:
+        list(dataframe,dataframe): listes de deux dataframes.
+        Le premier contient le traitement des emotions
+        et le second le traitement global
+    """
+
+    # on ne garde que les textes
+    data_text = dataframe['full_text']
+
+    # on crée une chaine de caractère contenant tous les textes concaténés
+    stack = data_text.str.cat(others=None, sep=None,
+                              na_rep=None, join='left')
+
+    # on calcule les occurences des mots par émotion
+    scores_dict = NRCLex(stack).raw_emotion_scores
+
+    # si aucun mot n'a été trouvés pour une catégorie, on crée la case et on la met à zéro
+    for word in ['fear', 'anger', 'joy', 'sadness', 'disgust', 'surprise', 'negative', 'positive']:
+        if word not in scores_dict:
+            scores_dict[word] = 0
+
+    # PARTIE 1 : EMOTIONS
+    # pour calculer la fréquence on a besoin d'un compteur des 6 émotions
+    emo_tot = scores_dict['fear'] + scores_dict['anger'] + scores_dict['joy'] + \
+        scores_dict['sadness'] + scores_dict['disgust'] + \
+        scores_dict['surprise']
+
+    # on crée le dataframe des émotions
+    dataframe1 = pd.DataFrame({
+        'Emotion': ['fear', 'anger', 'joy', 'sadness', 'disgust', 'surprise'],
+        'Frequency': [scores_dict['fear']/emo_tot,
+                      scores_dict['anger']/emo_tot,
+                      scores_dict['joy']/emo_tot,
+                      scores_dict['sadness']/emo_tot,
+                      scores_dict['disgust']/emo_tot,
+                      scores_dict['surprise']/emo_tot]
+    })
+
+    # PARTIE 2 : OTHER DATA
+    global_tot = scores_dict['positive'] + scores_dict['negative']
+    stack_tb = TextBlob(stack)
+
+    fav = dataframe['favorite_count']
+    fav_freq = fav.mean()/7500000
+    alpha = 2000000
+
+    # pour la fame, on fait une comparaison au tweet le plus liké : 7.5 millions
+    # on a donc un résultat entre 0 et 1
+    # on veut zoomer proche de zéro, et tasser proche de 1, en gardant des résultats entre 0 et 1
+    # on utilise la fonction f(x)=log(1+alpha*x)/log(1+alpha)
+
+    dataframe2 = pd.DataFrame({
+        'Global': ['Positivity', 'Subjectivity', 'Fame'],
+        'Frequency': [scores_dict['positive']/global_tot,
+                      stack_tb.sentiment.subjectivity,
+                      math.log(1+alpha*fav_freq)/math.log(1+alpha)]
+
+    })
+
+    return ([dataframe1, dataframe2])
diff --git a/src/old_coding_weeks/fetch_words.py b/src/old_coding_weeks/fetch_words.py
new file mode 100644
index 0000000000000000000000000000000000000000..85b0160f73b2fb6962966b0b9ab7477c2cc5cc88
--- /dev/null
+++ b/src/old_coding_weeks/fetch_words.py
@@ -0,0 +1,60 @@
+
+"""
+A partir d'un dataframe, on fait une selection des 12
+mots les plus fréquents pour ensuite créer la mosaïque d'images.
+
+"""
+
+from collections import Counter
+from textblob import TextBlob
+
+
+def frequent_words(dataframe, num):
+    """recherche les n mots les plus fréquents dans
+    un dataframe de tweets
+
+    Args:
+        dataframe (datafram): contient les tweets
+        num (integer): nombre de mots recherchés
+
+    Returns:
+        list(strings): liste des mots n mots les plus fréquents
+    """
+    text = ""
+
+    for tweet in dataframe["full_text"]:
+
+        text += " " + tweet
+
+    text = text.lower()
+
+    # On enlève au texte les chaines de carctères inutiles qui reviennent souvent
+
+    remove = ["https://t.co/", "&amp", "@",
+              "▫️", "•", "'", " ’ ", "\"", " i ", " t ", " s "]
+    for mot in remove:
+        text = text.replace(mot, ' ')
+
+    text = TextBlob(text)
+
+    nouns_in_text = [w for (w, pos) in text.tags if (
+        pos[0] == 'N' or pos[0] == 'NN' or pos[0] == 'NNP' or pos[0] == 'NNS' or pos[0] == 'NNPS')]
+
+    # on enlève les mots de moins de 3 caractères
+    i = 0
+    while i < len(nouns_in_text):
+        if len(nouns_in_text[i]) < 3:
+            nouns_in_text.pop(i)
+        i = i+1
+
+    # On crée une liste avec des couples de la forme ("mot", nombre d'occurrences).
+    counter = Counter(nouns_in_text)
+    # on supprime le mot 's' qui apparait tout le temps
+    del counter['s']
+    # On prend dans la liste Counter les n mots les plus fréquents.
+    most_frequent = counter.most_common(num)
+
+    # Finalement, on fait une liste uniquement avec les mots.
+    most_frequent_words = [couple[0] for couple in most_frequent]
+
+    return most_frequent_words