【问题标题】:how does featuretools DiffDatetimes work within the dfs?特征工具 DiffDatetimes 如何在 dfs 中工作?
【发布时间】:2022-10-07 02:25:55
【问题描述】:

我有以下数据集:

在哪里:

  • customer id 代表一个唯一的客户
  • 每个客户都有多张发票
  • 每张发票都标有唯一标识符(发票)
  • 每张发票有多个项目(行)

我想确定客户发票之间的时差。换句话说,一张发票和下一张发票之间的时间。这可能吗?我应该如何使用 DiffDatetime?

这是我设置实体的方式:

es = ft.EntitySet(id=\"data\")

es = es.add_dataframe(
    dataframe=df, 
    dataframe_name=\"items\", 
    index = \"items\", 
    make_index=True,  
    time_index=\"InvoiceDate\", 
)

es.normalize_dataframe(
    base_dataframe_name=\"items\", 
    new_dataframe_name=\"invoices\", 
    index=\"Invoice\", 
    copy_columns=[\"Customer ID\"], 
)

es.normalize_dataframe(
    base_dataframe_name=\"invoices\",
    new_dataframe_name=\"customers\",
    index=\"Customer ID\",
)

我试过了:

feature_matrix, feature_defs = ft.dfs(
    entityset=es,
    target_dataframe_name=\"invoices\",
    agg_primitives=[],
    trans_primitives=[\"diff_datetime\"],
    verbose=True,    
)

并且还将目标数据框更改为发票或客户,但这些都不起作用。

我正在尝试处理的 df 如下所示:

es[\"invoices\"].head()

我想要的可以用这样的熊猫来完成:

es[\"invoices\"].groupby(\"Customer ID\")[\"first_items_time\"].diff()

返回:

489434                NaT
489435    0 days 00:01:00
489436                NaT
489437                NaT
489438                NaT
               ...       
581582    0 days 00:01:00
581583    8 days 01:05:00
581584    0 days 00:02:00
581585   10 days 20:41:00
581586   14 days 02:27:00
Name: first_items_time, Length: 40505, dtype: timedelta64[ns]

    标签: featuretools


    【解决方案1】:

    谢谢你的问题。

    您可以在对dfs 的调用中使用groupby_trans_primitives 参数。

    这是一个例子:

    feature_matrix, feature_defs = ft.dfs(
        entityset=es,
        target_dataframe_name="invoices",
        agg_primitives=[],
        groupby_trans_primitives=["diff_datetime"],
        return_types="all",
        verbose=True,    
    )
    

    return_types 参数是必需的,因为 DiffDatetime 返回具有 Timedelta 逻辑类型的功能。如果不指定 return_types="all"DeepFeatureSynthesis 将仅返回具有数字、分类和布尔数据类型的要素。

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 2021-11-09
      • 2018-11-11
      • 2015-12-04
      • 2023-01-05
      • 1970-01-01
      • 2018-12-13
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多