You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:10:29