CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Porblème python avec triage de donnée csv

Blarta
Blarta
Niveau 11
02 juin 2021 à 15:37:44

Salut, je fais quelques fonctions en python et là je suis un peu bloqué, alors je vous explique :
Tout d'abord, j'ai une fonction pour apporter mon fichier csv

https://image.noelshack.com/fichiers/2021/22/3/1622640681-image.png
Le csv que j'utilise est là : https://www.data.gouv.fr/fr/datasets/r/08c18e08-6780-452d-9b8c-ae244ad529b3
(C'est des données sur le site du gouvernement)

Et enfaite , j'essaie de faire avec matplotlib une courbe pour chaque classe d'âge du nombre de personnes hospitalisés par jour. Le problème c'est que là où j'en suis j'ai réussi à faire des dictionnaires de dictionnaires de telle sorte :

{date : { âge : nombre }}

Et je n'arrive malheureusement pas à faire de matplotlib avec ça, je loupe un truc je crois.
A noté que j'ai réussi à en faire un mais c'était sur un autre fichier de données où j'ai mieux réussis et le dico était comme :

{âge : { date : nombre }}

Donc voilà, pour l'instant on code donne ça

https://image.noelshack.com/fichiers/2021/22/3/1622640995-image.png

Si vous voulez le code direct je peux l'envoyer.
Merci d'avance à ce qui m'aideront !

Azerban
Azerban
Niveau 16
02 juin 2021 à 17:42:59

Je pense que c'est plus facile de travailler avec une liste de dictionnaires qu'avec une liste de listes. Tu peux renvoyer une liste de dictionnaires comme ceci :

# https://www.jeuxvideo.com/forums/42-47-66740783-1-0-1-0-porbleme-python-avec-triage-de-donnee-csv.htm
# covid_csv.py

import csv
from pprint import pprint
from typing import List, Dict


def importationCSV(fichier: str, header: bool=True) -> List[Dict]:
    """Prend en entrée un fichier CSV et retourne une liste de dictionnaires.

    Args:
        fichier (str): Chemin vers un fichier csv
        header (Bool): Indique la présence d'un header
    """
    tableau = []
    with open(fichier, mode="r", encoding="utf-8") as csv_file:
        reader = csv.DictReader(csv_file, delimiter=";")
        if header:
            next(reader)  # Skip the header
        for row in reader:
            tableau.append({k: v for k, v in row.items()})
        return tableau


if __name__ == "__main__":
    datas = importationCSV("./donnees-hospitalieres-classe-age-covid19-2021-06-01-19h10.csv")
    pprint(datas[:10])  # On affiche les 10 premières lignes (sans le header)

Après tu n'as plus qu'à créer un nouveau dictionnaire global, tu parcours ta liste de dictionnaires et tu ajoute en clé la date et en valeur un nouveau dictionnaire qui contient la clé age et en valeur les décès.

Blarta
Blarta
Niveau 11
02 juin 2021 à 18:12:43

Le 02 juin 2021 à 17:42:59 :
Je pense que c'est plus facile de travailler avec une liste de dictionnaires qu'avec une liste de listes. Tu peux renvoyer une liste de dictionnaires comme ceci :

# https://www.jeuxvideo.com/forums/42-47-66740783-1-0-1-0-porbleme-python-avec-triage-de-donnee-csv.htm
# covid_csv.py

import csv
from pprint import pprint
from typing import List, Dict


def importationCSV(fichier: str, header: bool=True) -> List[Dict]:
    """Prend en entrée un fichier CSV et retourne une liste de dictionnaires.

    Args:
        fichier (str): Chemin vers un fichier csv
        header (Bool): Indique la présence d'un header
    """
    tableau = []
    with open(fichier, mode="r", encoding="utf-8") as csv_file:
        reader = csv.DictReader(csv_file, delimiter=";")
        if header:
            next(reader)  # Skip the header
        for row in reader:
            tableau.append({k: v for k, v in row.items()})
        return tableau


if __name__ == "__main__":
    datas = importationCSV("./donnees-hospitalieres-classe-age-covid19-2021-06-01-19h10.csv")
    pprint(datas[:10])  # On affiche les 10 premières lignes (sans le header)

Après tu n'as plus qu'à créer un nouveau dictionnaire global, tu parcours ta liste de dictionnaires et tu ajoute en clé la date et en valeur un nouveau dictionnaire qui contient la clé age et en valeur les décès.

Ok merci je vais essayer ça !

edit : Justement je veux l'âge en clé et non la date, car avec la date en clef j'arrive pas à créer le graphique :rire:

Message édité le 02 juin 2021 à 18:16:49 par Blarta
ChibreMusque2
ChibreMusque2
Niveau 8
02 juin 2021 à 18:28:41

Le 02 juin 2021 à 17:42:59 :
Je pense que c'est plus facile de travailler avec une liste de dictionnaires qu'avec une liste de listes. Tu peux renvoyer une liste de dictionnaires comme ceci :

# https://www.jeuxvideo.com/forums/42-47-66740783-1-0-1-0-porbleme-python-avec-triage-de-donnee-csv.htm
# covid_csv.py

import csv
from pprint import pprint
from typing import List, Dict


def importationCSV(fichier: str, header: bool=True) -> List[Dict]:
    """Prend en entrée un fichier CSV et retourne une liste de dictionnaires.

    Args:
        fichier (str): Chemin vers un fichier csv
        header (Bool): Indique la présence d'un header
    """
    tableau = []
    with open(fichier, mode="r", encoding="utf-8") as csv_file:
        reader = csv.DictReader(csv_file, delimiter=";")
        if header:
            next(reader)  # Skip the header
        for row in reader:
            tableau.append({k: v for k, v in row.items()})
        return tableau


if __name__ == "__main__":
    datas = importationCSV("./donnees-hospitalieres-classe-age-covid19-2021-06-01-19h10.csv")
    pprint(datas[:10])  # On affiche les 10 premières lignes (sans le header)

Après tu n'as plus qu'à créer un nouveau dictionnaire global, tu parcours ta liste de dictionnaires et tu ajoute en clé la date et en valeur un nouveau dictionnaire qui contient la clé age et en valeur les décès.

Hey ! J'ai remarqué que pour toutes les questions liées aux csv tu n'utilisais jamais pandas, il y a une raison à cela ?

Blarta
Blarta
Niveau 11
02 juin 2021 à 18:45:19

https://image.noelshack.com/fichiers/2021/22/3/1622652301-image.png

Bon mon code est dégueulasse mais voilà j'ai enfin réussi

Azerban
Azerban
Niveau 16
02 juin 2021 à 18:54:28

Le 02 juin 2021 à 18:28:41 :

Le 02 juin 2021 à 17:42:59 :
Je pense que c'est plus facile de travailler avec une liste de dictionnaires qu'avec une liste de listes. Tu peux renvoyer une liste de dictionnaires comme ceci :

# https://www.jeuxvideo.com/forums/42-47-66740783-1-0-1-0-porbleme-python-avec-triage-de-donnee-csv.htm
# covid_csv.py

import csv
from pprint import pprint
from typing import List, Dict


def importationCSV(fichier: str, header: bool=True) -> List[Dict]:
    """Prend en entrée un fichier CSV et retourne une liste de dictionnaires.

    Args:
        fichier (str): Chemin vers un fichier csv
        header (Bool): Indique la présence d'un header
    """
    tableau = []
    with open(fichier, mode="r", encoding="utf-8") as csv_file:
        reader = csv.DictReader(csv_file, delimiter=";")
        if header:
            next(reader)  # Skip the header
        for row in reader:
            tableau.append({k: v for k, v in row.items()})
        return tableau


if __name__ == "__main__":
    datas = importationCSV("./donnees-hospitalieres-classe-age-covid19-2021-06-01-19h10.csv")
    pprint(datas[:10])  # On affiche les 10 premières lignes (sans le header)

Après tu n'as plus qu'à créer un nouveau dictionnaire global, tu parcours ta liste de dictionnaires et tu ajoute en clé la date et en valeur un nouveau dictionnaire qui contient la clé age et en valeur les décès.

Hey ! J'ai remarqué que pour toutes les questions liées aux csv tu n'utilisais jamais pandas, il y a une raison à cela ?

Pandas c'est très bien mais je pensais que c'était un devoir et qu'il fallait utiliser la bibliothèque standard de Python. Mais oui sinon pandas fait largement l'affaire.

L'avantage de pandas c'est d'afficher facilement des données avec matplotlib et seaborn.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment