-5 votes

Python - lecture d'un fichier csv numérique, calcul de la valeur moyenne de toutes les entrées de chaque ligne

Quelqu'un pourrait-il m'aider à résoudre un problème avec Python. Je n'arrive pas à trouver d'exemples de code pour le scénario suivant :

Lecture du fichier csv spécifié par l'utilisateur. Ensuite, pour chaque ligne du fichier, calculer la moyenne et l'écart-type pour toutes les valeurs numériques de cette ligne et les imprimer à l'écran.

Je sais que les lignes csv sont lues sous forme de chaîne de caractères et qu'il faut donc les convertir en nombres flottants avant d'effectuer le calcul, mais après cela, je suis perdue.

1voto

mjv Points 38081

Comme il s'agit d'un travail à domicile, je ne fournirai que quelques indications.

  • attention à l'utilisation numpy comme suggéré dans d'autres réponses (à moins bien sûr que votre cours ne porte sur des calculs numériques avancés et autres, auquel cas numpy aurait du sens...)
  • en utilisant le csv peut simplifier l'analyse du fichier d'entrée ; là encore, il peut être utile d'apprendre à le faire à la main.

Les deux remarques ci-dessus amènent la question de la Comment utiliser Python dans le cadre d'un cours d'introduction à la programmation ? ? [comme cela semble être le cas ici]
Python est livré avec piles incluses Cela signifie qu'il donne accès à de très nombreux modules (à la fois "standard" et "complémentaires") qui permettent de répondre aux besoins les plus courants (mais aussi à certains des besoins les plus ésotériques). Les la langue elle-même fournit de nombreuses constructions qui facilitent les choses. Le problème pour le débutant est alors de décider s'il doit apprendre directement la manière la plus "pythonique" de faire les choses (en tirant parti de toutes ces constructions et bibliothèques puissantes) ou écrire les choses "à la main". Il s'agit d'un exercice d'équilibre... bien sûr, vous devez vous rappeler que pour la plupart des tâches, il y a probablement un module [ou deux] qui peut grandement aider. Souvent, les formateurs fixent des "limites" quant aux bibliothèques/modules autorisés.

Revenons au problème qui nous occupe...

  • la structure du programme ressemblerait à quelque chose comme

    [pseudo code] open file for each line in the file for each row in the file parse the numeric values to an array for each number in the array sum it up calculate the mean for each number in the array # (again, i.e. now that you have the mean, needed for stddev formula) sum up the stddev factors calculate the stddev print results

Maintenant, à vous de jouer... ;-)

0voto

robince Points 6523

Il existe un csv dans la bibliothèque standard, ce qui est probablement un bon point de départ. Après cela, je recommanderais de mettre les nombres dans un fichier numpy ce qui facilitera le calcul de la moyenne/std le long des lignes/colonnes ( array.max(axis=0) array.std(axis=1) etc.)

[modifier] En fait numpy.loadtxt doit faire ce que vous voulez :

d = np.loadtxt(filename, delimeter=',')
d.mean(axis=0) # or axis=1
d.std(axis=0) # or axis=1

0voto

Thomas Points 63635
import sys
import csv

for line in csv.reader(sys.argv[1]):
    print sum(line) / len(line)

Non testé, mais je pense qu'il est assez joli.

0voto

wgrover Points 3

Voici une bonne page expliquant comment lire des fichiers de données avec scipy/numpy . Les fichiers sont lus sous forme de tableaux numpy (plutôt que de chaînes) et vous pouvez ensuite calculer les moyennes, les écarts types, etc. à l'aide de numpy/scipy.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X