作为python的初学者,我感到非常沮丧,因为经过数小时的研究,我找不到在python中读取+绘制时间序列的解决方案,这可以在1分钟内在matlab,R或gnuplot中完成。
数据文件:
# id date value1 quality anothervalue value2
1 2011-05-19_16:30:19 974.3 3_1x NODATA 10E-4
...
我试过这个:
import pandas as pd
import numpy as np
from pandas import Series, DataFrame, Panel
import matplotlib as mp
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
a,b,c,d,e,f = np.loadtxt("dataset.dat", unpack=True,
converters={ 1: mdates.strpdate2num('%Y-%m-%d_%H:%M:%S') })
plt.plot_date(x=b, y=c)
plt.show()
Python一直失败,因为它试图自动将数据转换为浮点数。所以我尝试使用转换器,但其他列失败了。完全没有剧情。
- 如何告诉 Python 忽略以 # 开头的行?
- 我是否必须手动转换所有内容,或者我可以只读取数据集而不进行转换?
- 如何最终绘制日期时间的值 1?
- 我可以告诉 python 将 NODATA 解释为没有数据的值吗?所以它没有策划它?
python 的文档记录是否如此糟糕,以至于人们无法在几个小时后谷歌搜索解决方案,或者我只是错过了一些真正实用的东西?
不确定 numpy 是否可以达到所需的结果,因为它不太适合不同类型的数组。但是当你导入熊猫时,你可以使用pd.read_csv
:
>>> from StringIO import StringIO
>>> s = """# id date value1 quality anothervalue value2
... 1 2011-05-19_16:30:19 974.3 3_1x NODATA 10E-4"""
>>> pd.read_csv(StringIO(s[2:]), sep='s+',
... date_parser=mdates.strpdate2num('%Y-%m-%d_%H:%M:%S'),
... parse_dates=['date'])
id date value1 quality anothervalue value2
0 1 734276.68772 974.3 3_1x NODATA 0