使用matplotlib绘制CSV文件中的数据

use*_*133 28 python numpy matplotlib

我有一个CSV文件e:\dir1\datafile.csv.它包含三列,需要跳过10个标题和尾随行.我想用numpy.loadtxt()绘制它,我没有找到任何严格的文档.

以下是我从网上发现的几次尝试开始写的内容.

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()
Run Code Online (Sandbox Code Playgroud)

bmu*_*bmu 41

根据文档 numpy.loadtxt

简单格式文件的快速阅读器.genfromtxt函数提供更复杂的处理,例如具有缺失值的行.

所以只有几个选项来处理更复杂的文件.如上所述numpy.genfromtxt有更多选择.以此为例,您可以使用

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

读取数据并为列指定名称(或从文件中读取标题行names=True),然后用它绘制

ax1.plot(data['x'], data['y'], color='r', label='the data')
Run Code Online (Sandbox Code Playgroud)

我认为numpy现在已经有了很好的记录.您可以从内部ipython或使用IDE 轻松检查文档字符串,spider如果您更喜欢将它们呈现为HTML.

  • 感谢你的信息.我下载了numpy ref.手册; 它拥有我需要的关于genfromtxt的所有信息. (2认同)

小智 5

我正在猜测

x= data[:,0]
y= data[:,1]
Run Code Online (Sandbox Code Playgroud)