我如何将虚拟值添加到我的数据框(你是这么说的吗?)

how do i add dummy values to my dataframe (is this how you say it?)

我正在尝试做的事情的快速总结: 我正在尝试从 CSV 文件中检索销售数据,将它们放入数据框中,并从中进行可视化。

我的问题是,对于 2014 年,只有 11 月和 12 月存在。对于 2015 年,所有月份都存在。因此,当我进行可视化时,尺寸出现错误。

我试图通过创建新列表并添加 0 来暗示前几个月没有销售来解决这个问题,显然这没有用。

(我刚开始用 python 制作图表,我制作的图表是一个折线图,显示了这两年每个月的销售额)

# Retrieve data from each year
month = ['January', 'February', 'March', 'April', 'May', 'June', 
         'July', 'August', 'September', 'October', 'November', 'December']

#2014
#only 2 months instead of 12 as shown above
#month2018 = ['November', 'December']
revenue2014 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
profits2014 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

year2014 = df[df['order_year'] == 2014]
temp1 = year2014.groupby('order_month')['unitprice_in_usd'].sum().round(decimals = 2)
cost2014 = year2014.groupby('order_month')['unitcost_in_usd'].sum()
temp2 = (temp1 - cost2014).round(decimals = 2)
revenue2014.append(temp1)
profits2014.append(temp2)

#2015
year2015 = df[df['order_year'] == 2015]
revenue2015 = year2015.groupby('order_month')['unitprice_in_usd'].sum().round(decimals = 2)
cost2015 = year2015.groupby('order_month')['unitcost_in_usd'].sum()
profits2015 = (revenue2015 - cost2015).round(decimals = 2)

如果你想看我制作图表的代码...

fig, axes = plt.subplots(nrows = 1, ncols = 1, figsize=(15, 5))

axes.plot(month, revenue2014, c = 'r', label = '2014')
axes.plot(month, revenue2015, c = 'g', label = '2015')

axes.set_title('Revenue In Each Month From Each Year', fontsize = 20);

axes.set_xlabel('Months', fontsize = 15)
axes.set_ylabel('Revenue ($)', fontsize = 15)

axes.tick_params(axis = 'x', labelsize = 10)
axes.tick_params(axis = 'y', labelsize = 10)

axes.set_xlim(left = -1, right = 12)

axes.grid(c = 'r', alpha = .2, linestyle = '--')

axes.legend(loc = (1.02, 0), borderaxespad = 0, fontsize = 20)

fig.tight_layout()

plt.show()

我感谢所有建议:))

您可以将列 order_month 转换为所有月份的分类,因此如果聚合 sum 获取所有月份和缺失值 0:

df['order_month'] = pd.Categorical(df['order_month'], categories=month, ordered=True)