matplotlib: линейный график, показывающий цену всех продуктов на каждую дату с matplotlib или seaborn - PullRequest
1 голос
/ 21 мая 2019

как использовать линейный график для отображения цены всех продуктов на каждую дату на одном графике?

кадр данных состоит из трех столбцов и имеет вид:

+---------+-------+----------+
| product | price |   date   |
+---------+-------+----------+
| pen     |     1 | 20190101 |
| apple   |     2 | 20190101 |
| book    |     3 | 20190101 |
| cup     |     4 | 20190101 |
| pen     |   0.8 | 20190102 |
| apple   |   2.2 | 20190102 |
| book    |   3.1 | 20190102 |
| cup     |   3.5 | 20190102 |
| pen     |   0.6 | 20190103 |
| apple   |   2.6 | 20190103 |
| book    |   2.1 | 20190103 |
| cup     |   4.3 | 20190103 |
+---------+-------+----------+

enter image description here

1 Ответ

1 голос
/ 21 мая 2019

Предполагая ваш фрейм данных:

import pandas as pd

df = pd.DataFrame({'product':['pen','apple','book','cup','pen','apple','book','cup','pen','apple','book','cup',],
                   'price':[1,2,3,4,0.8,2.2,3.1,3.5,.6,2.6,2.1,4.3],
                   'date':['20190101','20190101','20190101','20190101','20190102','20190102','20190102','20190102','20190103','20190103','20190103','20190103']})

Вы можете использовать pandas.DataFrame.groupby для группировки продуктов и matplotlib для построения графика цен для каждого продукта:

import matplotlib.pyplot as plt

for i in df.groupby('product'):
    plt.plot(i[1].date,i[1].price,'-o',label=i[0])

plt.legend(loc='upper center',
           bbox_to_anchor=(0.5, -0.2),
           fancybox=True,
           shadow=True,
           ncol=4)
plt.xlabel('date')
plt.ylabel('price')
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...