Извлечение группы и построение графика на графике с использованием панд - PullRequest
0 голосов
/ 29 сентября 2019

Я только начинаю с Pandas и, используя этот набор данных, мне удалось построить линейный график с датой покупки на оси X и ценой на оси Y. Однако я хотел бы отобразить цены «Apple» с течением времени и цены «Orange» с течением времени на одном графике, поэтому есть одна линия для цен на апельсин и одна линия для цен на яблоки.

I 'я искал локсы и обучал группировке, но я наткнулся на кирпичную стену в моем обучении, поэтому любые советы будут с благодарностью.

Это файл CSV и мой код.

PurchaseDate, Fruit, Price
2019-01-05 08:00:00, Orange, 6
2019-01-06 08:00:00, Apple, 6
2019-01-07 08:00:00, Orange, 2
2019-01-08 08:00:00, Apple, 1
2019-01-09 08:00:00, Orange, 2
2019-01-10 08:00:00, Apple, 4
2019-01-11 08:00:00, Orange, 4
2019-01-12 08:00:00, Orange, 3
filename = 'fruit-data.csv'
fruits = pd.read_csv(filename)

plt.figure(figsize=(8,7))
plt.title('Purchase Date vs Price')
plt.plot(fruits.PurchaseDate, fruits.Price)

plt.xlabel('Time')
plt.ylabel('Price')

plt.show()

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Вы можете использовать DataFrame.pivot_table с DataFrame.ffill , , так что вы можете нарисовать n графиков для n разных фруктов :

prices_by_fruits=fruits.pivot_table(index='PurchaseDate',columns=' Fruit').ffill()
prices_by_fruits.columns=prices_by_fruits.columns.droplevel()
print(prices_by_fruits)

 Fruit                Apple   Orange
PurchaseDate                        
2019-01-05 08:00:00     NaN      6.0
2019-01-06 08:00:00     6.0      6.0
2019-01-07 08:00:00     6.0      2.0
2019-01-08 08:00:00     1.0      2.0
2019-01-09 08:00:00     1.0      2.0
2019-01-10 08:00:00     4.0      2.0
2019-01-11 08:00:00     4.0      4.0
2019-01-12 08:00:00     4.0      3.0

prices_by_fruits.plot(figsize=(15,10))

enter image description here

0 голосов
/ 29 сентября 2019

Вы можете вызвать функцию plot дважды для наложения графиков.

apple = fruits.loc[fruits.Fruit=='apple']
orange = fruits.loc[fruits.Fruit=='orange']
plt.figure(figsize=(8,7))
plt.title('Purchase Date vs Price')

plt.plot(apple.PurchaseDate, apple.Price)
plt.plot(orange.PurchaseDate, orange.Price)
plt.xlabel('Time')
plt.ylabel('Price')

plt.show()

Смотрите здесь для получения дополнительной информации об использовании .loc

Надеюсь, это поможет.

...