如何基于Pandas分析客户服务支付时长的分布区间?
找出支付时长的集中区间方案
首先要把字符串格式的timeToPay转换为pandas的timedelta类型,再提取可量化的数值(比如总小时数),之后通过可视化或分组统计找到最集中的区间。
步骤1:转换时间格式并提取量化指标
先把原始字符串转为timedelta,再计算总小时数(保留两位小数,方便观察):
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']}) # 转换为timedelta类型 df1['timeToPay'] = pd.to_timedelta(df1['timeToPay']) # 提取总小时数 df1['total_hours'] = df1['timeToPay'].dt.total_seconds() / 3600
步骤2:可视化看分布(直观找集中区间)
用直方图直接展示支付时长的分布,能快速看到哪个区间客户最多:
import matplotlib.pyplot as plt df1['total_hours'].plot(kind='hist', bins=10, edgecolor='black') plt.xlabel('支付时长(小时)') plt.ylabel('客户数量') plt.title('支付时长分布直方图') plt.show()
从示例数据的直方图能看到,大部分客户集中在0-6小时和10-14小时区间,其中0-6小时的客户数最多。
步骤3:自定义区间分组统计(精准定位)
如果需要更精准的区间统计,可以手动定义区间,然后分组计数:
# 定义区间边界,可根据实际数据调整 bins = [0, 1, 6, 12, 24, 48] labels = ['0-1小时', '1-6小时', '6-12小时', '12-24小时', '24-48小时'] # 给每条数据打区间标签 df1['pay_interval'] = pd.cut(df1['total_hours'], bins=bins, labels=labels, right=False) # 统计每个区间的客户数 interval_count = df1['pay_interval'].value_counts().sort_index() print(interval_count)
运行示例数据会得到:
0-1小时 0 1-6小时 4 6-12小时 2 12-24小时 1 24-48小时 1 Name: pay_interval, dtype: int64
能明确看到1-6小时是客户支付最集中的区间,有4位客户。
扩展:结合其他维度分析
如果需要看不同性别、不同价格区间的支付时长分布,可以用分组统计:
# 按性别和支付区间分组统计 gender_interval = df1.groupby(['gender', 'pay_interval'])['id'].count().unstack() print(gender_interval)
内容的提问来源于stack exchange,提问作者user20916747
相关产品推荐
相关产品推荐

