Pertanyaan Memplot Pandas DataSeries.GroupBy


Saya baru mengenal python dan panda, dan memiliki yang berikut DataFrame.

Bagaimana saya bisa merencanakan DataFrame dimana masing-masing ModelID adalah plot terpisah, saledate adalah sumbu x dan MeanToDate adalah sumbu y?

Mencoba

data[40:76].groupby('ModelID').plot()

enter image description here

DataFrame

enter image description here


17
2018-05-04 15:56


asal


Jawaban:


Anda dapat membuat plot dengan menggilir grup dari groupby:

import matplotlib.pyplot as plt

for title, group in df.groupby('ModelID'):
    group.plot(x='saleDate', y='MeanToDate', title=title)

Lihat untuk informasi lebih lanjut tentang merencanakan dengan pandas dataframe:
http://pandas.pydata.org/pandas-docs/stable/visualization.html
dan untuk mengulang objek groupby:
http://pandas.pydata.org/pandas-docs/stable/groupby.html#iterating-through-groups


22
2018-05-04 18:05



Contoh dengan agregasi:

Saya ingin melakukan sesuatu seperti berikut, jika panda memiliki estetika warna seperti ggplot:

aggregated = df.groupby(['model', 'training_examples']).aggregate(np.mean)
aggregated.plot(x='training_examples', y='accuracy', label='model')

(kolom: model adalah string, training_examples adalah integer, akurasi adalah desimal)

Tapi itu hanya menghasilkan kekacauan.

Berkat jawaban joris, saya mendapatkan:

for index, group in df.groupby(['model']):
    group_agg = group.groupby(['training_examples']).aggregate(np.mean)
    group_agg.plot(y='accuracy', label=index)

Saya menemukan itu title= hanya mengganti judul tunggal plot pada setiap iterasi perulangan, tetapi label= melakukan apa yang Anda harapkan - setelah berlari plt.legend(), tentu saja.


10
2018-03-13 03:49