我有包含id,性别,价格,支付时间的数据。例如:
import pandas as pd
df1 = pd.DataFrame({'id': ['1','2','3','4','5','6','7','8'],
'gender': ['Male','Female','Male','Female','Male','Female','Male','Male'],
'price': [250, 1000,300, 250, 1000, 500, 450, 500],
'timeToPay':['0 days 01:20:00','1 days 03:24:02','0 days 12:45:55','0 days 05:38:20','0 days 02:44:12','0 days 11:25:38','1 days 01:11:00','0 days 05:22:00']})
付款时间,是客户下单和付款之间的时间差(数据类型timedelta64[ns])。
我如何才能获得最佳的付费时间范围,我的意思是,人们是在0-1小时,4-6小时,还是1 - 2天之间付费。我想知道人们为我提供的服务支付了多长时间。
我试着根据付款时间对数据进行分组,但我认为它没有提供我需要的信息
iuc,
我稍微修改了一下你的代码,使它更容易复制。
import pandas as pd
df1 = pd.DataFrame({'id': ['1','2','3','4','5','6','7','8'],
'gender': ['Male','Female','Male','Female','Male','Female','Male','Male'],
'price': [250, 1000,300, 250, 1000, 500, 450, 500],
'timeToPay':[ '0 days 01:20:00'
,'1 days 03:24:02'
,'0 days 12:45:55'
,'0 days 05:38:20'
,'0 days 02:44:12'
,'0 days 11:25:38'
,'1 days 01:11:00'
,'0 days 05:22:00']})
df1['timeToPay']=df1['timeToPay'].apply(lambda x: pd.Timedelta(x))
现在timeToPay
是timedelta
,那么你可以用这个代码片段将timeToPay
转换为hour
和day
。
import math
df1['timeToPay_hour']=df1['timeToPay'].apply(lambda x: math.ceil(x.total_seconds()/(60*60)))
df1['timeToPay_day']=df1['timeToPay'].apply(lambda x: math.ceil(x.total_seconds()/(24*60*60)))
df1
现在,你的df1
看起来像这样
我会选择直方图。用不同的bin大小试试,这取决于你有多少行。
如果您需要在不同的服务上测量它,您可能需要先将日期与组分开,然后对每个组进行历史记录。
pandas.DataFrame.hist
进一步你可以计算平均值,这又取决于你的数据分布,所以基本上你需要先知道你的数据。