2016-10-06 39 views
6

Tôi cố gắng để vẽ một đối tượng gấu trúc groupby sử dụng mã fil.groupby('imei').plot(x=['time'],y = ['battery'],ax=ax, title = str(i))Pandas groupby vật trong truyền thuyết về âm mưu

Vấn đề là những âm mưu danh sách huyền thoại ['battery'] như giá trị huyền thoại. Do nó vẽ một đường thẳng cho mỗi mục trong đối tượng groupby, thay vào đó nó có ý nghĩa hơn khi vẽ các giá trị đó trong chú giải. Tuy nhiên tôi không chắc chắn làm thế nào để làm điều đó. Bất kỳ trợ giúp sẽ được đánh giá cao.

liệu

    time    imei battery_raw 
0 2016-09-30 07:01:23 862117020146766  42208 
1 2016-09-30 07:06:23 862117024146766  42213 
2 2016-09-30 07:11:23 862117056146766  42151 
3 2016-09-30 07:16:23 862117995146745  42263 
4 2016-09-30 07:21:23 862117020146732  42293 

Full đang

for i in entity: 
    fil = df[(df['entity_id']==i)] 
    fig, ax = plt.subplots(figsize=(18,6)) 
    fil.groupby('imei').plot(x=['time'],y = ['battery'],ax=ax, title = str(i)) 
    plt.legend(fil.imei) 
    plt.show() 

cốt truyện hiện tại

enter image description here

+2

bạn có thể đăng một dataframe dụ được sử dụng như là đầu vào f hoặc phương pháp groupby? –

+0

'fil.imei' là gì? điều gì sẽ xảy ra nếu bạn chỉ làm 'ax.legend()'? –

+0

Câu trả lời là sạch sẽ như nó phải - nếu bạn sử dụng cú pháp gấu trúc sạch hơn một chút. Huh. – cphlewis

Trả lời

7

Hơi dọn dẹp dữ liệu:

date   time    imei  battery_raw 
0 2016-09-30 07:01:23 862117020146766  42208 
1 2016-09-30 07:06:23 862117020146766  42213 
2 2016-09-30 07:11:23 862117020146766  42151 
3 2016-09-30 07:16:23 862117995146745  42263 
4 2016-09-30 07:21:23 862117995146745  42293 

Toàn bộ mã ví dụ:

import matplotlib.pyplot as plt 

fil = pd.read_csv('imei.csv', sep=r'\s*', engine='python') 
fig, ax = plt.subplots(figsize=(18,6)) 

for name, group in fil.groupby('imei'): 
    group.plot(x=pd.to_datetime(group['time']), y='battery_raw', ax=ax, label=name) 

plt.show() 

x-giá trị phải được chuyển đổi sang datetime cho âm mưu đi ra ngay, như thường lệ. Bạn cũng có thể làm điều đó trong khung dữ liệu.

Kết quả, dán nhãn bằng imei:

enter image description here (Chú ý:. Sửa để thoát khỏi một kỳ quặc tôi vấp lần đầu tiên Nếu bạn vượt qua một danh sách như y lập luận để group.plot, các ID danh sách sẽ sử dụng như các nhãn dòng, có lẽ như một mặc định hữu ích cho khi bạn đang âm mưu một số biến phụ thuộc cùng một lúc.

#for name, group in fil.groupby('imei'): 
# group.plot(x=['time'], y=['battery_raw'], ax=ax, label=name) 

)

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