在python中简单加载时间序列和绘图



作为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

最新更新