Линейный график для нечисловых данных - PullRequest
0 голосов
/ 30 мая 2019

У меня есть набор данных с в основном не числовыми формами. Я хотел бы создать для них визуализацию, но у меня появляется сообщение об ошибке.

Мой набор данных выглядит так

 |plant_name|Customer_name|Job site|Delivery.Date|DeliveryQuantity|
 |SN13|John|Sweden|01.01.2019|6|
 |SN14|Ruth|France|01.04.2018|4|
 |SN15|Jane|Serbia|01.01.2019|2|
 |SN11|Rome|Denmark|01.04.2018|10|
 |SN14|John|Sweden|03.04.2018|5|
 |SN15|John|Sweden|04.09.2019|7|
 |

Мне нужно создать линейный график, чтобы показать, сколько раз Джон делал покупку, используя дату доставки в качестве моей временной шкалы (ось X)

import  pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
pd.set_option("display.max_rows", 5)

hr_data = pd.read_excel("D:\data\Days_Calculation.xlsx", parse_dates = True)

x = hr_data['DeliveryDate']
y = hr_data ['Customer_name']

sns.lineplot(x,y)

Error: No numeric types to aggregate

Мой ожидаемый результат - линейный график, подобный этому

Маркер Джона будет представлен на временной шкале (Дата доставки) на «01.01.2019», «03.04.2018» и «04.09.2019»

Другой экземпляр Построить строку с плавающей запятой, например, Общее количество (DeliveryQuantity) и Имя клиента. Как можно подойти к этому

как отформатировать расстояние по осям графика (без метки)

Ответы [ 2 ]

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

Почему бы не сделать дату доставки объектом временной метки вместо строки?

hr_data["Delivery.Date"] = pd.to_datetime(hr_data["Delivery.Date"]) 

Теперь у вас есть параметры графика.

Работа с Джоном.

john_data = hr_data[hr_data["Customer_name"]=="John"]
sns.countplot(john_data["Delivery.Date"]) 
1 голос
/ 30 мая 2019

Вообще говоря, нужно что-то агрегировать при работе с категориальными данными. Будете ли вы считать имена в столбце или добавлять количество заказов или ранжировать некоторые категории, это все равно числовые данные.

plot_data = hr_data.pivot_table(index='DeliveryDate', columns='Customer_name', values='DeliveryQuantity', aggfunc='sum')

plt.xticks(LISTOFVALUESFORXRANGE)
plot_data.plot(legend=False)
...