NSI, Tables de données, Json, Listes et dictionnaires

On considère le lien ci-dessous :
https://opendata.paris.fr/explore/dataset/lieux-de-tournage-a-paris/information/?disjunctive.type_tournage&disjunctive.nom_tournage&disjunctive.nom_realisateur&disjunctive.nom_producteur&disjunctive.ardt_lieu

  1. Déterminer combien y a t il eu de tournages de family business S1 dans le 3eme arrondissement à Paris.

Télécharger le fichier csv contenant les données de la page.

L’ouvrir avec un editeur de texte. Que signifie .csv ?

Quel type de logiciel permet d’exploiter ce genre de données ?

Répondre à la question 1 en utilisant excell ou open office.

Télécharger le fichier .json

L’ouvrir avec un éditeur de texte. Quelles structures de données de python identifiez vous ?

Traitement d’un fichier .json en python :

  • Créer un dossier json dans votre dossier dictionnaire de NSI et le nommer TP_cinema, y deposer le fichier json de vos données en le nommant lieux_tournages_Paris.json
  • Ouvrir un fichier python et y mettre le code ci-dessous :
import json

with open('lieux_tournages_Paris.json') as json_data:
    mes_donnees = json.load(json_data)

Enregistrer votre programme dans le dossier contenant votre fichier json et exécutez le.

Explorer la structure de la variable mes_donnees

  1. Ecrire une fonction permettant de déterminer combien il y a eu de lieux de tournages différents pour un nom de film ou série donné..
  2. Ecrire une fonction permettant de déterminer le(s) nom(s) des films ou séries tournées sur Parsi par un réalisateur.

Proposition de correction

import json

with open('lieux_tournages_Paris') as json_data:
    mes_donnees = json.load(json_data)
    
def lieux_tournages(nom):
    '''
    >>>lieux_tournages('FAMILY BUSINESS S1')
    19
    '''
    c=0
    for tournage in mes_donnees:
        if tournage['nom_tournage']==nom:
            c+=1
    return c
            
def series_films(nom):
    '''
    >>>series_films("ALEXANDRE LAURENT")
   ['LA MANTE', 'PROFILAGE/67 A 68/ SAISON 7', "CAT'S EYES",
   'PROFILAGE EPISODES 101/102']
    '''
    retour=[]
    for tournages in mes_donnees:
        if tournages['nom_realisateur']==nom:
            if not(tournages['nom_tournage'] in retour):
                retour.append(tournages['nom_tournage'])
    return retour