web-dev-qa-db-fra.com

tracer les données d'un fichier CSV avec matplotlib

J'ai un fichier CSV sur e:\dir1\datafile.csv. Il contient trois colonnes et 10 lignes d'en-tête et de fin doivent être ignorées. Je voudrais le tracer avec numpy.loadtxt (), pour lequel je n'ai trouvé aucune documentation rigoureuse.

Voici ce que j'ai commencé à écrire à partir des nombreux essais que j'ai trouvés sur le Web.

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

def read_datafile(file_name):
    # the skiprows keyword is for heading, but I don't know if trailing lines
    # can be specified
    data = np.loadtxt(file_name, delimiter=',', skiprows=10)
    return data

data = read_datafile('e:\dir1\datafile.csv')

x = ???
y = ???

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_title("Mains power stability")    
ax1.set_xlabel('time')
ax1.set_ylabel('Mains voltage')

ax1.plot(x,y, c='r', label='the data')

leg = ax1.legend()

plt.show()
27
user1850133

Selon les docsnumpy.loadtxt est

un lecteur rapide pour les fichiers simplement formatés. La fonction genfromtxt fournit une gestion plus sophistiquée, par exemple, des lignes avec des valeurs manquantes.

il n'y a donc que quelques options pour gérer des fichiers plus compliqués. Comme mentionné numpy.genfromtxt a plus d'options. Donc, à titre d'exemple, vous pouvez utiliser

import numpy as np
data = np.genfromtxt('e:\dir1\datafile.csv', delimiter=',', skip_header=10,
                     skip_footer=10, names=['x', 'y', 'z'])

pour lire les données et attribuer des noms aux colonnes (ou lire une ligne d'en-tête du fichier avec names=True) et que tracer avec

ax1.plot(data['x'], data['y'], color='r', label='the data')

Je pense que numpy est assez bien documenté maintenant. Vous pouvez facilement inspecter les docstrings de l'intérieur ipython ou en utilisant un IDE comme spider if vous préférez les lire en HTML.

40
bmu

Je devine

x= data[:,0]
y= data[:,1]
4
user1316487