基于csv文件的Python绘制时间与数据包

基于csv文件的Python绘制时间与数据包,python,csv,graph,numpy,matplotlib,Python,Csv,Graph,Numpy,Matplotlib,我在一个文本文件中有一堆数据,如下所示: 99150, 2012-05-18 14:30:08.592276 100350, 2012-05-18 14:31:09.093357 97710, 2012-05-18 14:32:09.583485 94980, 2012-05-18 14:33:10.047794 95670, 2012-05-18 14:34:10.559798 97170, 2012-05-18 14:35:11.073576 98850, 2012-05-18 14:36:

我在一个文本文件中有一堆数据,如下所示:

99150, 2012-05-18 14:30:08.592276
100350, 2012-05-18 14:31:09.093357
97710, 2012-05-18 14:32:09.583485
94980, 2012-05-18 14:33:10.047794
95670, 2012-05-18 14:34:10.559798
97170, 2012-05-18 14:35:11.073576
98850, 2012-05-18 14:36:11.562930
98280, 2012-05-18 14:37:12.058591
97950, 2012-05-18 14:38:12.547585
102510, 2012-05-18 14:39:13.053431
我想做一个简单的绘图,并输出图像。我从以下几点开始:

#!/bin/python

import csv
import matplotlib.pyplot as plt
import numpy as np

filename="pps_counter.log"

def getColumn(filename, column):
    results = csv.reader(open(filename), delimiter=",")
    return [result[column] for result in results]

time = getColumn(filename,1)
packets = getColumn(filename,0)

plt.figure("Packets Per Minute")
plt.xlabel("Time(minutes)")
plt.ylabel("Number of Packets")
plt.plot(time,packets)
当我运行此命令时,会出现以下错误:

Traceback (most recent call last):
  File "plotter.py", line 16, in <module>
    time = getColumn(filename,1)
  File "plotter.py", line 14, in getColumn
    return [result[column] for result in results]
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“plotter.py”,第16行,在
时间=getColumn(文件名,1)
getColumn中第14行的文件“plotter.py”
返回[result in results的结果[列]
索引器:列表索引超出范围

有人能帮忙吗?

我需要一些错误检查 像

返回[result[column]if column

您的文件中似乎有一行缺少

我将使用一些错误检查 像

返回[result[column]if column
您的文件中似乎有一行缺少

我建议使用(或带有转换函数的genfromtxt)。这将把时间转换为python日期时间,您可以使用
matplotlib
进行打印

from matplotlib.mlab import csv2rec
import matplotlib.pyplot as plt 

data = csv2rec('pps_counter.log', names=['packets', 'time'])

plt.plot_date(data['time'], data['packets'])
plt.xlabel("Time(minutes)")
plt.ylabel("Number of Packets")
plt.title("Packets Per Minute")

plt.show()
我建议使用(或带有转换函数的genfromtxt)。这将把时间转换为python日期时间,您可以使用
matplotlib
进行打印

from matplotlib.mlab import csv2rec
import matplotlib.pyplot as plt 

data = csv2rec('pps_counter.log', names=['packets', 'time'])

plt.plot_date(data['time'], data['packets'])
plt.xlabel("Time(minutes)")
plt.ylabel("Number of Packets")
plt.title("Packets Per Minute")

plt.show()

或者它可以是结尾的一个空行;这会导致相同的错误。我添加了@corn3lius建议的错误检查,但我也尝试了旧方法,并删除了文件中的尾随空行,这两种方法都会导致:plt.figure(“每分钟包数”)文件中的文件“plotter.py”,第21行“/usr/lib64/python2.7/site packages/matplotlib/pyplot.py”,第257行,在figure num=int中(num)#num arguments的粗略验证我使用None(null)对象作为错误情况,您可以在图形中使用0或其他明显的值。或者您可以找到并删除该行在您的输入中。也可能是结尾的空行;这会导致相同的错误。我添加了@corn3lius建议的错误检查,但我也尝试了旧方法并删除了文件中的尾随空行,两者都会导致:plt.figure(“每分钟包数”)文件中的文件“plotter.py”,第21行“/usr/lib64/python2.7/site packages/matplotlib/pyplot.py”,第257行,在图num=int(num)#num arguments的粗略验证中,我使用None(null)对象作为错误情况,您可以使用0或图形中值得注意的东西。或者您可以找到并删除该行在您的输入中。太棒了!谢谢,我已经自定义了图形并将其设置为输出到文件…谢谢。太棒了!谢谢,我已经自定义了图形并将其设置为输出到文件…谢谢。