Python从csv转换matplotlib的日期时间

2024-09-28 20:55:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个csv文件中打印,列1作为日期时间值,如下所示

 27-08-2016 08:43   21.38329164

使用此代码:

^{pr2}$

我得到了这个错误:

    x,y = np.genfromtxt('I112-1a.csv', unpack=True,dtype=None, delimiter = ',', converters={0: lambda x: datetime.strptime(x, '%d-%m-%Y %H:%M')})
ValueError: too many values to unpack

请帮忙! 谢谢


Tags: 文件csv代码nonetrue错误np时间
2条回答
from matplotlib import pyplot as plt
from matplotlib import style
import numpy as np
import datetime as dt
from datetime import datetime
import matplotlib.dates as mdates


style.use('ggplot')
data = np.genfromtxt('I112-1.csv', unpack=True,dtype=None, names=True,delimiter = ',', converters={0: lambda x: datetime.strptime(x, '%d-%m-%Y %H:%M')})
x = data['Time']
y = data['Charge']

plt.plot (x,y)                
plt.title('Panel Charge')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()

来源:numpy.genfromtxt

numpy.genfromtxt  Returns:ndarray
Data read from the text file. If usemask is True, this is a masked array.

@Ev。Kounis在评论部分指出:numpy.genfromtxt只返回一个数组,并将其分配给两个参数x和y

请更新您的代码如下:

^{pr2}$

例如

如果你的数据文件是这样的

col1, col2, col3
   1,    2,    3
  10,   20,   30
 100,  200,  300

然后,numpy.genfromtxt可以使用names=True选项将第一行解释为列标题。通过提供列标题,您可以非常方便地访问数据:

data = np.genfromtxt('data.txt', delimiter=',', names=True)
print data['col1']    # Output: array([   1.,   10.,  100.])
print data['col2']    # Output: array([   2.,   20.,  200.])
print data['col3']    # Output: array([   3.,   30.,  300.])

因为在这种情况下,数据是这样形成的

row1,   1,  10, 100
row2,   2,  20, 200
row3,   3,  30, 300

使用以下代码片段可以实现类似的效果:

labels = np.genfromtxt('data.txt', delimiter=',', usecols=0, dtype=str)
raw_data = np.genfromtxt('data.txt', delimiter=',')[:,1:]

第一行将第一列(标签)读入字符串数组。 第二行从文件中读取所有数据,但丢弃第一列。 这就是如何提取不同变量中的列。在

如果要绘制col1和col2,只需定义:

x=data['col1']
y=data['col2']

相关问题 更多 >