{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "Qh9VksBDl8WW" }, "source": [ "# TP - Introduction à MongoDB\n", "\n", "Ce TP a pour but de se familiariser avec les bases de données document, au travers de MongoDB.\n", "\n", "## Partie 1 - Manipulation de données avec MongoDB\n", "\n", "Un fichier `pathologies.json` vous est fourni, contenant des données sur les pathologies issues de la Caisse nationale de l'Assurance Maladie. Nous allons utiliser MongoDB pour faire des requêtes sur ces données." ] }, { "cell_type": "code", "metadata": {}, "source": "!pip install pandas pymongo --quiet", "outputs": [], "execution_count": null }, { "cell_type": "code", "metadata": { "id": "uJZYV397lsA3" }, "source": [ "import pymongo\n", "import pandas as pd\n", "\n", "# Remplacer l'URI par celle sur MongoDB Atlas, en n'oubliant pas de remplacer le nom de l'utilisateur, le mot de passe et le nom du cluster\n", "URI = 'mongodb+srv://:@.mongodb.net/?retryWrites=true&w=majority&appName='\n", "client = pymongo.MongoClient(URI)\n", "db = client.tp\n", "\n", "# Afficher le nom des collections de la base de données et la collection pathologies\n", "print(\"Collections: \", db.list_collection_names())\n", "print(\"Pathologies: \", db.pathologies)" ], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": "1. Quelles sont les pathologies de niveau 1 présentes dans la base de données ?" }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Lister toutes les catégories de pathologies de niveau 2" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": "3. Combien y a-t-il de personnes avec une pathologie \"Maladies cardioneurovasculaires\" ?" }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. Compter le nombre de documents concernant la tranche d'âge \"45-49 ans\"" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Compter le nombre de documents où la prévalence (prev) est supérieure à 0.2" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "6. Lister tous les documents, en n'affichant que l'année, la pathologie de niveau 1, la région et le département" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "7. Lister toutes les pathologies de niveau 3 pour les femmes (sexe=2), en affichant seulement la pathologie et la classe d'âge." ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "8. Lister les pathologies pour les régions \"32\" ou \"44\", en affichant la pathologie de niveau 1, le département et la prévalence" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "9. Afficher les pathologies de niveau 2, la région et le niveau de priorité." ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "cell_type": "markdown", "metadata": {}, "source": [ "10. Lister les pathologies où la prévalence est nulle (prev: null), en affichant la pathologie de niveau 3, la région et le département" ] }, { "cell_type": "code", "metadata": {}, "source": [], "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": [ "## Partie 2 - Agrégation de données avec MongoDB\n", "\n", "Maintenant que nous avons vu comment faire des requêtes simples, nous allons voir comment faire des agrégations de données, c'est-à-dire des requêtes plus complexes qui permettent de faire des calculs sur les données.\n" ] }, { "metadata": {}, "cell_type": "markdown", "source": "1. Quelles sont les 10 plus grandes chaînes de restaurants (i.e les restaurants avec un nom identique) ?\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "2. Donner le Top 5 des types de cuisine, en termes de nombre de restaurants.\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "3. Donner le Flop 5 des types de cuisine, en termes de nombre de restaurants.\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "4. Quelles sont les 10 rues avec le plus de restaurants ?\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "5. Quelles sont les restaurants situés sur strictement plus de 2 quartiers ? Essayez d'ajouter le nom des quartiers de chaque rue (cf `addToSet`).\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "6. Lister par quartier le nombre de restaurants et le score moyen. Attention à bien découper le tableau `grades`\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "7. Donner les dates de début et de fin des évaluations\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "8. Quels sont les 10 restaurants (nom, quartier, adresse et score) avec le plus petit score moyen ?\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "9. Quels sont les restaurants (nom, quartier et adresse) avec uniquement des grades `A` ?\n" }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "markdown", "source": "10. Compter le nombre d'évaluations par jour de la semaine." }, { "metadata": {}, "cell_type": "code", "source": "", "outputs": [], "execution_count": null } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.7" } }, "nbformat": 4, "nbformat_minor": 0 }