我正在使用python分析一个销售数据集的数据。这个数据集由两列组成,分别是交易日期和相应的国家代码。这个数据集是一个panda DataFrame,它是基于两个较小的数据集的列创建的,这两个较小的数据集具有不同的列名,如下图所示:
frames_f, frames_l = get_sales_frames(True)
sales_f = frames_f[['Transaction Date', 'Buyer Country']]
sales_l = frames_l[['Order Charged Date', 'Country of Buyer']]
sales_l.columns = sales_f.columns
sales = pd.concat([sales_f, sales_l])
sales['Transaction Date'] = pd.to_datetime(sales['Transaction Date'], infer_datetime_format=True)
数据集包含7个月内 * 每天 * 的购买数据。为了分析数据,我需要计算每个国家 * 每周 * 的购买数量。
首先,我尝试寻找类似的问题,在那里我找到了一个答案,它对我有所帮助,建议使用一个额外的1列和使用.sum()
,它给了我以下内容:
sales['Purchases'] = 1
purchases = sales.groupby(['Transaction Date', 'Buyer Country'])['Purchases'].sum()
print(purchases)
这将给出以下输出:
Transaction Date Buyer Country
2021-06-01 US 2
2021-06-02 GB 1
IL 1
SE 1
US 7
..
2021-12-29 US 7
2021-12-30 CA 1
US 4
2021-12-31 GB 1
US 7
现在,这对我帮助很大,但是我需要每周而不是每天的计数。我希望结果看起来像这样,但是每个国家的计数在交易日期的每个星期都要计数。
实现这一目标的最有效方式是什么?
除了建议使用添加的“购买”列外,我还尝试(可能是错误的方式)使用df.groupby(pd.Grouper(key='Transaction Date', freq="W")).count()
,但没有任何运气,因为它会计算每周购买的所有示例,与国家无关。
1条答案
按热度按时间whhtz7ly1#
尝试以下方法:首先分配一周,然后继续每周的总购买量。