如何对CSV文件数据使用df.value_counts统计魔方速拧秒数区间频次
魔方还原时间区间统计解决方案
你之前直接对浮点型还原时间列调用value_counts()只能统计精确值的出现次数,是因为没有先将数据归类到对应整数秒区间,按以下步骤操作即可实现需求:
1. 生成整数秒区间列
首先对还原时间列做向下取整,得到每个记录对应的整数秒区间(如9.87归到9秒区间、10.48归到10秒区间,符合≥n秒且<n+1秒的区间定义):
import pandas as pd # 假设你存储还原秒数的列名为 solve_time df['second_bucket'] = (df['solve_time'] // 1).astype(int)
2. 按区间统计次数
对生成的区间列调用value_counts()即可得到各区间的出现次数,搭配sort_index()可以让结果按区间从小到大排序:
# 统计结果为Series类型,索引是整数秒区间值,值是对应出现次数 bucket_counts = df['second_bucket'].value_counts().sort_index() # 提取指定区间次数的示例:获取10秒区间的出现次数,无对应记录时返回0 count_10s = bucket_counts.get(10, 0)
如果需要补全所有中间区间的0次记录,可以添加重索引逻辑:
# 覆盖从最小到最大区间的完整范围,缺失区间自动填充次数为0 full_range = range(df['second_bucket'].min(), df['second_bucket'].max() + 1) bucket_counts = bucket_counts.reindex(full_range, fill_value=0)
3. 结果导出为CSV
将统计结果转换为DataFrame后即可直接导出为新的CSV文件:
result_df = bucket_counts.reset_index() # 重命名列,语义更清晰 result_df.columns = ['整数秒区间', '出现次数'] # 导出CSV,不保留默认索引列 result_df.to_csv('solve_time_bucket_count.csv', index=False)
示例验证
对你给出的示例数据[10.48, 11.22, 13.26, 9.87],运行上述代码后得到的统计结果为:
| 整数秒区间 | 出现次数 |
|---|---|
| 9 | 1 |
| 10 | 1 |
| 11 | 1 |
| 13 | 1 |
内容的提问来源于stack exchange,提问作者Gauthier C.
相关产品推荐
相关产品推荐

