非数值数据的折线图

时间:2019-05-30 12:49:11

标签: python pandas matplotlib data-visualization seaborn

我的数据集大多是非数字形式。我很想为他们创建一个可视化文件,但出现错误消息。

我的数据集如下

 |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

我的预期结果显示为像这样的线图

John的标记将显示在时间轴(“交付日期”)上的“ 01.01.2019”,“ 03.04.2018”和“ 04.09.2019”

另一个实例 例如,要绘制字符串与浮动的关系图,例如数量总数(DeliveryQuantity)与客户名称的关系。如何解决这个问题

如何格式化绘图(而非标签)的轴距

2 个答案:

答案 0 :(得分:1)

通常来说,在使用分类数据时,您必须汇总一些东西。无论您是要在栏中计算名称,还是要添加订单数量,还是对某些类别进行排名,这仍然是数字数据。

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

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

答案 1 :(得分:1)

为什么不将交货日期作为时间戳对象而不是字符串?

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"])