2013-12-20 18 views
0

作爲Python的初學者,我非常沮喪,因爲經過幾個小時的研究,我無法找到解決方案閱讀+繪製時間系列在python中可以在matlab,R或gnuplot在1分鐘內。簡單的加載時間系列和劇情python

數據文件:

# 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忽略行以#開始?
  • 我必須手動轉換所有東西,還是可以在沒有轉換的情況下讀取數據集?
  • 如何最終在日期時間繪製value1?
  • 我可以告訴python將NODATA解釋爲沒有數據的值嗎?所以它不會陰謀呢?

Python是如此嚴重的文件記錄,一個人不能在幾個小時後谷歌解決方案,或者我只是錯過了真正實際上有用的東西呢?

+0

你的問題實際上是關於matplotlib - 所以,如果你將其標記爲這樣的,你可能更容易得到響應。 –

+0

你最好一次問一個問題,或者問題變得太寬泛而無法回答,而且對於進一步的參考沒什麼用處。 – alko

回答

0

不確定您是否可以用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