如何用Pandas从CSV中获取指定日期区间内TOP10高频OFFENCE_CODE?
按指定日期范围统计高频违规代码
你需要在现有代码基础上添加日期范围筛选逻辑,以下是修改后的完整代码:
import pandas as pd # 修正日期写法,转成pandas可识别的日期类型 input_date1 = pd.to_datetime('2012/11/1') input_date2 = pd.to_datetime('2013/11/1') # 读取CSV时直接将日期列解析为日期类型 df = pd.read_csv( "penalty_data_set.csv", usecols=['OFFENCE_CODE', 'OFFENCE_MONTH'], parse_dates=['OFFENCE_MONTH'] ) # 筛选出指定日期范围内的数据 filtered_df = df[(df['OFFENCE_MONTH'] >= input_date1) & (df['OFFENCE_MONTH'] <= input_date2)] # 统计筛选后出现频率最高的前10个违规代码 print(filtered_df['OFFENCE_CODE'].value_counts().nlargest(10))
关键改动说明:
- 修正日期变量:原始代码中
2012/11/1是非法Python语法,改为字符串后用pd.to_datetime()转为标准日期类型,支持后续范围比较 - 解析日期列:读取CSV时通过
parse_dates参数直接处理OFFENCE_MONTH列,避免后续手动转换格式 - 添加日期筛选:用布尔索引精准过滤出目标日期区间内的数据
- 基于筛选结果统计:仅对符合日期条件的记录进行违规代码频率统计,确保结果范围准确
内容的提问来源于stack exchange,提问作者satanfable
相关产品推荐
相关产品推荐

