问题描述
我正在尝试使用FeatureTools创建用于客户流失分析的数据集。我有一个包含以下字段的订单原始数据集:
customer_id,order_id,order_month,order_datetime,order_cost
我想创建一个数据集,该数据集每个客户每月在该月内已下订单并返回相关信息(例如AVG(order_cost))的每一行。到目前为止,我已经创建了包括订单(基于order_id)和客户(customer_id)的实体。但是,我还无法弄清楚如何为每个客户创建每月功能。我尝试过创建一个单独的实体,该实体基于每个customer_id + order_month的自定义ID。那是最好的方法吗?有更好的工具吗?
谢谢!
解决方法
感谢您的提问。如果您希望每个客户每月排一行,那么这是目前最好的方法。否则,您还可以使用where原语为每个客户每月获取一列。为此,您需要为order_month
变量设置有趣的值,并在DFS中使用where_primitives
。
es['orders']['order_month'].interesting_values = df.order_month.unique()
fm,fd = ft.dfs(
target_entity='customers',entityset=es,trans_primitives=[],agg_primitives=['mean'],where_primitives=['mean'],)
MEAN(orders.order_cost WHERE order_month = 1) ... MEAN(orders.order_cost WHERE order_month = 12)
customer_id ...
2 659.426667 ... 3.000
1 478.490000 ... 435.270
3 468.316667 ... 319.975