sian:2022:tpm1sql

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
sian:2022:tpm1sql [2022/11/24 15:28] – [Requête plus complexes] fabien.ricosian:2022:tpm1sql [2022/11/24 22:17] (Version actuelle) – [En python] fabien.rico
Ligne 98: Ligne 98:
   * Faire un programme python qui affiche pour chaque mot clef le nombre de fois qu'il est utilisé dans un cours.   * Faire un programme python qui affiche pour chaque mot clef le nombre de fois qu'il est utilisé dans un cours.
  
 +<hidden>
 +<code>
 +#!/usr/bin/env python
 +# coding: utf-8
 +
 +# ## Connexion à la base et curseur
 +
 +
 +# In[1]:
 +
 +
 +import mysql.connector
 +import json
 +
 +conn = mysql.connector.connect(
 +    host="bdd.imst.os.univ-lyon1.fr",
 +    user="etudiant",
 +    password="sqlavance",
 +    database="funmooc")
 +cursor = conn.cursor()
 +
 +
 +# ## Éxécution de la requète
 +
 +# In[2]:
 +
 +
 +cursor.execute("""
 +SELECT categories.title AS motClef, courses.title AS titrecours 
 +  FROM courses JOIN courses_categories
 +                    ON courses_categories.id_course=courses.id
 +               JOIN categories
 +                    ON courses_categories.id_categorie=categories.id
 +  WHERE categories.genre="subjects"
 +  ORDER BY courses.id
 +""")
 +
 +
 +# ## Comptage des mots clef
 +
 +# Pour chaque mot clef trouvé, j'ajoute 1 dans le tableau qui contient le nombre de fois qu'on l'a déjà vu.
 +# Si le mot n'a jamais été vu, j'utilise le fait qu'il est possible d'avoir une valeur par défaut dans un dictionnaire via `get`
 +
 +# Au passage j'affiche le mot et le nombre de fois qu'on l'a vu.
 +
 +
 +# In[3]:
 +
 +
 +tab = {}
 +while True:
 +    res = cursor.fetchone()
 +    if res is None:
 +        break
 +    # Le mot clef est la première colonne demandée dans le SELECT alors il sera
 +    # dans la première case du résultat    
 +    mot = res[0]
 +    # On récupère le nmbre de fois où il a été vu ou 0 s'il n'a jamais été vu
 +    nbdeja = tab.get(mot, 0)
 +    # on affiche
 +    print(f"On trouve le mot clef '{mot}' déjà vu {nbdeja} fois")
 +    # on ajoute un et on change la valeur du tableau
 +    tab[mot] = nbdeja+1
 +
 +# Affichage
 +print(tab)
 +# Affichage plus joli
 +print(json.dumps(tab, indent=2))
 +
 +
 +# ## on fait un nuage de mot
 +
 +# Ce n'est pas demander mais à partir d'un dictionnaire qui compte le nombre d'ocurence des mots on peut facilement faire un nuage de mot avec la librairie `wordcloud`
 +
 +# In[5]:
 +
 +
 +# génération du nuage
 +import wordcloud
 +import matplotlib.pyplot as plt
 +wordcloud = wordcloud.WordCloud().generate_from_frequencies(tab)
 +# affichage
 +plt.imshow(wordcloud, interpolation='bilinear')
 +plt.axis("off")
 +plt.show()
 +</code>
 +</hidden>
  
   * Faire un programme python qui obtient la liste des mots clef de chaque cours de chaque organisation et affiche le tableau suivant:   * Faire un programme python qui obtient la liste des mots clef de chaque cours de chaque organisation et affiche le tableau suivant:
  • sian/2022/tpm1sql.txt
  • Dernière modification : 2022/11/24 22:17
  • de fabien.rico