我如何将虚拟值添加到我的数据框(你是这么说的吗?)
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)
我正在尝试做的事情的快速总结: 我正在尝试从 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)