2015-06-19 3 views
0

Предположим, что я сделал GroupBy на valgdata DataFrame, как показано ниже:Plotting несколько временных рядов после GroupBy в панд

grouped_valgdata = valgdata.groupby(['news_site','dato_uden_tid']).mean() 

Теперь я получаю это:

        sentiment 
news_site   dato_uden_tid   
dr.dk    2015-06-15  54.777183 
        2015-06-16  54.703167 
        2015-06-17  54.948775 
        2015-06-18  54.424881 
        2015-06-19  53.290554 
eb.dk    2015-06-15  53.279251 
        2015-06-16  53.285643 
        2015-06-17  53.558753 
        2015-06-18  52.854750 
        2015-06-19  54.415988 
jp.dk    2015-06-15  56.590428 
        2015-06-16  55.313752 
        2015-06-17  53.771377 
        2015-06-18  53.218408 
        2015-06-19  54.392638 
pol.dk    2015-06-15  54.759532 
        2015-06-16  55.182641 
        2015-06-17  55.001800 
        2015-06-18  56.004326 
        2015-06-19  54.649052 

Теперь я хочу сделать временные ряды для каждого из news_site, где dato_uden_tid находится на оси X, а настроение - по оси Y.

Каков наилучший и простой способ достичь этого?

Спасибо!

ответ

1

(Am немного позабавило, так как этот вопрос застал меня делать одно и то же.)

Вы могли бы сделать что-то вроде

valgdata\ 
    .groupby([valgdata.dato_uden_tid.name, valgdata.news_site.name])\ 
    .mean()\ 
    .unstack() 

которая

  • обратный GroupBy

  • неустановить новые сайты, которые будут колоннами

Чтобы построить, просто сделать предыдущий фрагмент кода сразу после этого .plot():

valgdata\ 
    .groupby([valgdata.dato_uden_tid.name, valgdata.news_site.name])\ 
    .mean()\ 
    .unstack()\ 
    .plot() 
+0

Спасибо! Только то, что я искал! –

Смежные вопросы