IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Traitement fichier csv


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Traitement fichier csv
    Bonjour à tous,
    Je débute sur la programmation en Python dans le cadre de mon Master et je me heurte à un souci technique ...
    Je dois traiter un très grand fichier CSV avec pas mal de données ... Nom : python.PNG
Affichages : 121
Taille : 48,9 Ko
    J'ai mis en PJ une capture d'écran pour la structure du CSV.
    Ce que je voudrais faire, c'est pouvoir pour chaque jour et chaque créneau horaire, effectuer une somme de toutes les lignes du jour et de l'horaire en question ... Et je n'y arrive pas ! Je sais qu'il faut une fonction sum mais je sais pas du tout comment avoir les éléments concrètement.
    J'arrive à avoir les éléments individuellement, mais pas la somme de l'ensemble des lignes de tel créneau horaire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with open('Frequentation_fvt.csv') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=';')
     
        for row in csv_reader:
            if(row[0]=="16/01/2020" and row[10]=="06:00-08:00"):
                #tabdate.append(row[0])
                tabheure.append(row[10])
                tabvolume.append(row[11])
    Donc avec ça j'arrive à faire un graphique, mais il me prend toutes les lignes sans faire la somme.
    Ma question est de savoir quelle ligne ajouter pour que ça me crée une somme de toutes les lignes du 16/01 sur le créneau 06:00-08:00.
    JE devrais ensuite faire de même pour tous les autres créneaux et pour tous les jours de l'année ...

    Merci d'avance pour les lumières !

    Bonne journée,

    Maïtena

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 29
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    AMHA, par rapport au code que tu as posté, il me semble que la colonne des heures a l'index 9 et non pas 10 et donc la colonne des volumes l'index 11 et non pas 10 (et j'imagine que tu as en amont une déclaration des tabheure, tabdate et tabvolume).

    Après pour obtenir les valeurs de somme de volume par date et tranche horaire, je ferais de la façon suivante (il y a plein d'autres solutions)
    - j'enlèverais la ligne 5 pour constituer 3 listes tabheure, tabdate et tabvolume contenant toutes les valeurs des colonnes
    - j'ajouterais en fin de code sans indentation le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    uniqdateheure=list(set(zip(tabdate,tabheure))) #Création des combinaisons uniques de date/heure
     
    tabres=[]
    for dat,heure in uniqdateheure:
        tabres+=[(dat,heure,sum([tabvolume[i] for i in range(len(tabvolume)) if tabdate[i]==dat and tabheure[i]==heure]))]
    Tu récupères une liste de tuples tabres comprenant pour chaque tuple la date, l'heure et la somme des volumes.
    Si tu voulais que ce soit mis dans l'ordre chronologique, il faut passer par la conversion en datetime.
    Il n'y a plus qu'à tester (chez moi, cela fonctionne !)
    A bientôt

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour Didou139

    Merci pour votre retour ! Je regarde cela, mais je pense que le nombre de cours que l'on a eu n'est pas suffisant pour me permettre de comprendre tout le processus.
    Je pense que le mieux pour moi va être de reprendre de zéro Python, en prenant le temps de lire les bases et ainsi progresser peu à peu. Du coup, je réutiliserai votre code pour faire fonctionner mon outil à l'issue de ce travail.
    Et je vais employer la bonne vieille méthode du traitement à la mano pour le partiel, et tester ensuite des choses pour progresser par moi même !
    Encore merci !
    Bonne fin de journée,

Discussions similaires

  1. Réponses: 18
    Dernier message: 24/06/2011, 15h13
  2. Traitement fichier csv
    Par jouclar dans le forum Général Python
    Réponses: 3
    Dernier message: 15/05/2011, 10h06
  3. Traitement fichier CSV et recherche de sous-chaines
    Par j.lasnier dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/03/2010, 11h31
  4. Traitement fichiers csv
    Par athra dans le forum Forms
    Réponses: 0
    Dernier message: 20/06/2008, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo