2012-11-28 60 views
12

Tôi có dữ liệu GPS về tốc độ băng từ ba máy thu GPS khác nhau. Dữ liệu nằm trong một khung dữ liệu gấu trúc với chỉ số ngày tháng julian (tăng dần từ đầu năm 2009).Lô tô dữ liệu khung chứa NaNs

Đây là một tập hợp con của dữ liệu (dataset chính là 3.487.235 hàng ...):

    R2   R7   R8 
1235.000000 116.321959 100.805197 96.519977 
1235.000116 NaN   100.771133 96.234957 
1235.000231 NaN   100.584559 97.249262 
1235.000347 118.823610 100.169055 96.777833 
1235.000463 NaN   99.753551 96.598350 
1235.000579 NaN   99.338048 95.283989 
1235.000694 113.995003 98.922544 95.154067 

Các dataframe có dạng:

 
Index: 6071320 entries, 127.67291667 to 1338.51805556 
Data columns: 
R2 3487235 non-null values 
R7 3875864 non-null values 
R8 1092430 non-null values 
dtypes: float64(3) 

R2 lấy mẫu tại một tỷ lệ khác nhau để R7 và R8 do đó các NaN xuất hiện một cách có hệ thống ở khoảng cách đó.

Cố gắng df.plot() để vẽ toàn bộ khung dữ liệu (hoặc vị trí hàng được lập chỉ mục của chúng) hoạt động tốt về mặt đồ thị R7 và R8, nhưng không vẽ lô R2. Tương tự, chỉ cần thực hiện df.R2.plot() cũng không hoạt động. Cách duy nhất để vẽ R2 là làm df.R2.dropna().plot(), nhưng điều này cũng loại bỏ các NaN biểu thị thời gian không có dữ liệu (thay vì chỉ là tần suất lấy mẫu thô hơn các máy thu khác).

Có ai khác bắt gặp điều này không? Bất kỳ ý tưởng nào về vấn đề này sẽ được biết ơn một cách biết ơn :)

+0

bạn nên chuyển đổi bước thời gian của bạn để một 'DatetiemIndex' và hơn resample R2 – bmu

Trả lời

9

Lý do bạn không thấy bất kỳ điều gì là do kiểu ô mặc định chỉ là một dòng. Nhưng dòng bị gián đoạn tại NaN vì vậy chỉ có nhiều giá trị hậu quả sẽ được vẽ. Và sau này không xảy ra trong trường hợp của bạn. Bạn cần phải thay đổi phong cách âm mưu, phụ thuộc vào những gì bạn muốn xem.

Để bắt đầu, hãy thử thêm:

.plot(marker='o') 

Điều đó sẽ làm cho tất cả các điểm dữ liệu xuất hiện như những vòng tròn. Nó dễ dàng bị lộn xộn để điều chỉnh đánh dấu, edgecolor vv có thể hữu ích. Im không được điều chỉnh hoàn toàn với cách Pandas đang sử dụng matplotlib vì vậy tôi thường chuyển sang Matplotlib bản thân mình nếu lô trở nên phức tạp hơn, ví dụ:

plt.plot(df.R2.index.to_pydatetime(), df.R2, 'o-') 
+1

Cảm ơn Rutger, đó là một công việc tốt cho thời điểm này. Lý do lớn của tôi để sử dụng gấu trúc sẽ là chỉ mục lại mọi thứ cho cùng một khoảng thời gian lấy mẫu trước những tính toán như sự tương quan chéo, vì vậy tôi có thể tiếp tục sử dụng matplotlib độc lập cho âm mưu cơ bản. Cảm ơn. – ajt

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