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 :

calcul moyenne en python � partir fichier CSV


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2020
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : D�cembre 2020
    Messages : 2
    Par d�faut calcul moyenne en python � partir fichier CSV
    Bonjour,

    lors de mon calcul de moyenne, je n'arrive pas � exclure les z�ros de mon fichiers.
    voici mon code, je ne trouve pas mon erreur.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    import csv
     
    with open('DataToAnalyze.csv') as csv_file:
    	reader = csv.reader(csv_file)
    	average = 0
    	sum = 0
    	row_count = 0
    		for row in reader:
    		for column in row:
    			n=float(column)
    					if n != 0:
    						sum += n
    						row_count += 1
    	average = sum / row_count
    	print('La moyenne est :', average)
    	csv_file.close()
    merci d'avance pour une aide

  2. #2
    Membre confirm�
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : Curieux
    Secteur : B�timent

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par d�faut
    Bonjour,

    D�j� reprend ton indentation car elle n'est pas fonctionnelle, c'est surprenant que tu n'aies pas de message d'erreur.

    Puis essaye avec �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import csv
     
    file = 'DataToAnalyze.csv' # 0;10;25;10;25
     
    with open(file, 'r') as file:
        reader = csv.reader(file, delimiter=';')
        datas = [ligne for ligne in reader]
        l = [i for i in datas[0] if i != '0']
        somme = 0
        for data in datas[0]:
            somme = somme + float(data)
        moyenne = somme/len(datas[0])
        file.close()
    print('la moyenne est : ',moyenne)

  3. #3
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par d�faut
    A part l'indentation, je ne vois pas d'erreur.
    average = 0 ne sert � rien au d�but.

  4. #4
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Salut,

    Si on comprend bien les items de valeur z�ro sont exclus du calcul de la moyenne.
    Dans ce cas ton code peut �tre simplifi� comme ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    data = [[12, 50, 0, 1],
            [5, 5, 10, 0],
            [8, 0, 0, 10]]
    sum_ = 0
    count = 0
    for row in data:
        for col in row:
            sum_ += float(col)
            count += col > 0
     
    average = sum_ / count
    print("Sum: %s, count: %s, average: %s" %(sum_, count, average))

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 848
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 848
    Billets dans le blog
    1
    Par d�faut
    Bonjour
    Citation Envoy� par VinsS Voir le message
    Dans ce cas ton code peut �tre simplifi� comme ceci:
    Es-tu sur qu'additionner "0" sans le tester soit une optimisation ? Surtout que juste en dessous tu testes quand-m�me si cette valeur vaut 0.
    Ne vaut-il donc pas mieux la tester (puisque de toute fa�on le test reste obligatoire) et seulement si la valeur correspond alors l'additionner ? On �limine ainsi une addition parfois inutile...

    Sinon passer par une liste en intension
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    d=tuple(float(c) for row in data for c in row if c != 0)
    average=sum(d)/len(d)
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirm�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par d�faut
    Citation Envoy� par Sve@r Voir le message
    Bonjour

    Es-tu sur qu'additionner "0" sans le tester soit une optimisation ? Surtout que juste en dessous tu testes quand-m�me si cette valeur vaut 0.
    Ne vaut-il donc pas mieux la tester (puisque de toute fa�on le test reste obligatoire) et seulement si la valeur correspond alors l'additionner ? On �limine ainsi une addition parfois inutile...
    Ce n'est pas une question d'optimisation, tout ce qui simplifie le code est bienvenu.

    Par contre, v�rifier avant, �a s'appelle "Look before you leap" et ce n'est pas pythonique.

    Je pr�f�re de loin mon code.

  7. #7
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 094
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 094
    Par d�faut
    Si on part d'un CSV, les regex peuvent �tre sympa pour le tri des 0.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    import re
     
    with open("test.csv", 'r') as f:
        numbers = re.findall("[0-9]{2}|[1-9]", f.read())
        print(sum(map(int, numbers))/len(numbers))
    Peut-�tre est-ce optimis�, je sais pas...

  8. #8
    Futur Membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2020
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Sant�

    Informations forums :
    Inscription : D�cembre 2020
    Messages : 2
    Par d�faut
    Merci beaucoup � tous

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Python-Cr�ation fichier CSV + cr�ation de courbes � partir des donn�es
    Par Alex-python38 dans le forum G�n�ral Python
    R�ponses: 1
    Dernier message: 28/08/2018, 10h14
  2. calcule de temps a partir d'un fichier CSV
    Par AI_LINUX dans le forum Calcul scientifique
    R�ponses: 2
    Dernier message: 10/05/2015, 18h28
  3. python et fichier .CSV
    Par billyrose dans le forum G�n�ral Python
    R�ponses: 7
    Dernier message: 22/07/2008, 07h53
  4. Fichier CSV � partir un programme C
    Par Premium dans le forum C
    R�ponses: 3
    Dernier message: 25/05/2006, 23h53
  5. Ecrire un fichiers CSV � partir de 3 fichiers Excel
    Par yas2006 dans le forum Documents
    R�ponses: 22
    Dernier message: 14/03/2006, 14h10

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