gpt4 book ai didi

python - FeatureTools:time_index参数中可以有多列吗?

转载 作者:行者123 更新时间:2023-12-01 00:31:23 25 4
gpt4 key购买 nike

我在数据帧中有两个时间参数,即 start_date 和 end_date,当从数据帧创建实体集时,这两个参数都是时间参数。

在指定 time_index 时,我们可以指定 2 个不同的列吗?

我不想创建一个合并两列的新列,因为我想获得两列的 agg_primitives,如“time_since_first”、“time_since_last”、“avg_time_ Between”、“trend”。

请告诉我。

最佳答案

这可以通过将第二个时间列指定为 DatetimeTimeIndex 来完成。这是使用演示数据集的示例。​

import featuretools as ft

df = ft.demo.load_mock_customer(return_single_table=True)
df = df.filter(regex='amount|customer|time')

​我创建第二个时间列。​

df['transaction_time_2'] = df['transaction_time']
df.head()
     transaction_time  amount  customer_id  transaction_time_2
0 2014-01-01 00:00:00 127.64 2 2014-01-01 00:00:00
1 2014-01-01 00:09:45 57.39 2 2014-01-01 00:09:45
2 2014-01-01 00:14:05 69.45 2 2014-01-01 00:14:05
3 2014-01-01 02:33:50 123.19 2 2014-01-01 02:33:50
4 2014-01-01 02:37:05 64.47 2 2014-01-01 02:37:05

​然后,我创建一个实体集。我使用 variable_types 参数将第二个时间列设置为 DatetimeTimeIndex 变量类型。​

es = ft.EntitySet()
es.entity_from_dataframe(
'transactions',
df,
time_index='transaction_time',
index='id',
make_index=True,
variable_types={
'transaction_time_2': ft.variable_types.DatetimeTimeIndex,
}
)
es.normalize_entity('transactions', 'customers', index='customer_id')

​最后,我计算特征矩阵。我们可以看到基于时间的基元已应用于两个时间列。​

fm, fd = ft.dfs(
target_entity='customers',
entityset=es,
agg_primitives=[
"time_since_first",
"time_since_last",
"avg_time_between",
"trend",
],
trans_primitives=[],
)

print(fm.iloc[0].to_string())
TIME_SINCE_FIRST(transactions.transaction_time)      1.822703e+08
TIME_SINCE_FIRST(transactions.transaction_time_2) 1.822703e+08
TIME_SINCE_LAST(transactions.transaction_time) 1.822401e+08
TIME_SINCE_LAST(transactions.transaction_time_2) 1.822401e+08
AVG_TIME_BETWEEN(transactions.transaction_time) 3.285326e+02
AVG_TIME_BETWEEN(transactions.transaction_time_2) 3.285326e+02
TREND(transactions.amount, transaction_time) -5.251887e+01
TREND(transactions.amount, transaction_time_2) -5.251887e+01

​如果有帮助请告诉我。

关于python - FeatureTools:time_index参数中可以有多列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com