Python 如何从一个数据帧创建堆叠线图
我有一个csv文件,按月份分组,然后按日期分组 数据持续时间为2019年1月1日至2019年10月31日。我想分别绘制每个月(1月、2月、3月、4月、10月)的图表。对于每个月,我都想创建一个折线图,将开始日期与num\u订单列进行比较 我已经用Python 如何从一个数据帧创建堆叠线图,python,pandas,dataframe,matplotlib,seaborn,Python,Pandas,Dataframe,Matplotlib,Seaborn,我有一个csv文件,按月份分组,然后按日期分组 数据持续时间为2019年1月1日至2019年10月31日。我想分别绘制每个月(1月、2月、3月、4月、10月)的图表。对于每个月,我都想创建一个折线图,将开始日期与num\u订单列进行比较 我已经用df=pd.read\u csv('orders.csv') 如果我用seabornplot=sns.lineplot(x='month',y='num_orders',data=df)创建了一个线形图,它将所有月份都绘制在一起,但我想根据月份创建10个
df=pd.read\u csv('orders.csv')
如果我用seabornplot=sns.lineplot(x='month',y='num_orders',data=df)
创建了一个线形图,它将所有月份都绘制在一起,但我想根据月份创建10个单独的线形图。请让我知道,如果我可以进一步扩大
编辑:代码我有:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
%matplotlib inline
df = pd.read_csv('orders.csv')
plot = sns.lineplot(x='month', y='num_orders', data=df)
编辑(2)
您可以在sns.lineplot(…)中使用
hue=month
。您还必须从day\u start
中提取day,然后使x=day
。否则,使用x=day\u start进行绘图
意味着您正在绘制独立的不连续线
下面是一个简短的示例,其中包含一个示例数据框以指导您
代码
输出
您能分享您的代码和一些测试数据吗?请参阅:.@AlexanderCécile在我的代码中编辑。我使用的是jupyter笔记本,那么样本/测试数据呢?这可能只是一个超级基本的例子。在不知道输入或无法运行的情况下对代码进行推理基本上是不可能的。
打印(df.head(10))
并将其粘贴到图像中。@AlexanderCécile我不确定如何上传整个CSV。上面的图片是我调用df.head()
时的一个视图。如果你看不到图片,请告诉我
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
month = [1,1,1,1,1,\
2,2,2,2,2,\
3,3,3,3,3]
day_started = ['2019-01-01','2019-01-07','2019-01-05','2019-01-11','2019-01-31',\
'2019-02-28','2019-02-17','2019-02-13','2019-02-10','2019-02-07',\
'2019-03-04','2019-03-07','2019-03-15','2019-03-23','2019-03-18']
num_order = [1,4,5,6,7,\
8,9,10,4,2,\
5,6,9,1,3]
data = {'month':month,'day_started':pd.to_datetime(day_started),'num_order':num_order}
df = pd.DataFrame(data)
df['day'] = df['day_started'].apply(lambda t: t.day)
#print(df)
#at this stage the df looks like this
# month day_started num_order day
# 0 1 2019-01-01 1 1
# 1 1 2019-01-07 4 7
# 2 1 2019-01-05 5 5
# 3 1 2019-01-11 6 11
# 4 1 2019-01-31 7 31
# 5 2 2019-02-28 8 28
# 6 2 2019-02-17 9 17
# 7 2 2019-02-13 10 13
# 8 2 2019-02-10 4 10
# 9 2 2019-02-07 2 7
# 10 3 2019-03-04 5 4
# 11 3 2019-03-07 6 7
# 12 3 2019-03-15 9 15
# 13 3 2019-03-23 1 23
# 14 3 2019-03-18 3 18
plt.figure(figsize=(12,8))
sns.lineplot(x='day',y='num_order',hue='month',data=df,legend='full')