2013-06-11 50 views
7

Tôi đang cố vẽ một chuỗi biểu đồ thời gian bằng Python. There has been a similar question about this, but in R. Vì vậy, về cơ bản, tôi cần điều tương tự, nhưng tôi thực sự xấu trong R. Thường có 48 giá trị mỗi ngày trong tập dữ liệu của tôi. Ở đâu - 9999 đại diện cho dữ liệu bị thiếu. Here's mẫu dữ liệu.Thời gian biểu đồ thị của biểu đồ trong Python

Tôi bắt đầu với việc đọc dữ liệu và xây dựng một pandasDataFrame.

import pandas as pd 
df = pd.read_csv('sample.csv', parse_dates=True, index_col=0, na_values='-9999') 
print df 

<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 336 entries, 2008-07-25 14:00:00 to 2008-08-01 13:30:00 
Data columns (total 1 columns): 
159.487691046 330 non-null values 
dtypes: float64(1) 

Bây giờ tôi có thể nhóm dữ liệu theo ngày:

daily = df.groupby(lambda x: x.date()) 

Nhưng sau đó tôi bị mắc kẹt. Tôi không biết làm thế nào để sử dụng điều này với matplotlib để có được khoảng thời gian của tôi về biểu đồ. Bất kỳ trợ giúp nào được đánh giá cao, không nhất thiết phải sử dụng pandas.

Trả lời

5

Tạo biểu đồ và sử dụng pcolor của matplotlib.

Chúng tôi cần phải nhóm các nhóm một cách thống nhất, vì vậy chúng tôi tạo các thùng theo cách thủ công dựa trên phạm vi dữ liệu mẫu của bạn.

In [26]: bins = np.linspace(0, 360, 10) 

Áp dụng histogram cho mỗi nhóm.

In [27]: f = lambda x: Series(np.histogram(x, bins=bins)[0], index=bins[:-1]) 

In [28]: df1 = daily.apply(f) 

In [29]: df1 
Out[29]: 
      0 40 80 120 160 200 240 280 320 
2008-07-25 0 0 0 3 18 0 0 0 0 
2008-07-26 2 0 0 0 17 6 13 1 8 
2008-07-27 4 3 10 0 0 0 0 0 31 
2008-07-28 0 7 15 0 0 0 0 6 20 
2008-07-29 0 0 0 0 0 0 20 26 0 
2008-07-30 10 1 0 0 0 0 1 25 9 
2008-07-31 30 4 1 0 0 0 0 0 12 
2008-08-01 0 0 0 0 0 0 0 14 14 

Theo ví dụ được liên kết của bạn trong R, trục ngang phải là ngày và trục dọc phải là phạm vi của các thùng. Các giá trị biểu đồ là một "bản đồ nhiệt".

In [30]: pcolor(df1.T) 
Out[30]: <matplotlib.collections.PolyCollection at 0xbb60e2c> 

enter image description here

Nó vẫn còn dán nhãn các trục. This answer nên có một số trợ giúp.

+3

thêm vào sách nấu ăn! – Jeff

+0

Cảm ơn! Điều này nên làm điều đó. Tôi hoàn toàn quên đề cập đến điều đó - 9999 là một số bị thiếu và nên bị hủy bỏ. Sẽ thêm nó vào câu hỏi. – abudis

+0

Điều này rất tuyệt! –

Các vấn đề liên quan