python - 使用日期时间确定时间间隔内的最高频率事件

标签 python datetime pandas iteration

我有一个数据框,其中包含大量犯罪统计数据,包括犯罪日期和时间以及犯罪类别。

0       5/13/2015 8:55           VEHICLE THEFT   
1       5/13/2015 8:41          OTHER OFFENSES   
2       5/13/2015 8:36          OTHER OFFENSES   
3       5/13/2015 8:30            NON-CRIMINAL   
4       5/13/2015 8:17          OTHER OFFENSES   
5       5/13/2015 8:16          OTHER OFFENSES   
6       5/13/2015 8:10           LARCENY/THEFT   
7       5/13/2015 8:00                BURGLARY   
8       5/13/2015 8:00          MISSING PERSON   
9       5/13/2015 8:00          OTHER OFFENSES   
10      5/13/2015 8:00                 ASSAULT 
---

因此对于上面的示例,它会简单地打印:“Other Offences”。

这是一个庞大的数据库,超过 400,000 行。

我需要编写一个函数,允许我输入任何给定的时间范围(使用从和到),然后确定哪个犯罪类别发生的频率最高。这就是我所拥有的,但它不起作用:

import pandas as pd
import csv
import datetime
timeData = open("timeData.csv")
df = pd.read_csv('timeData.csv')

from datetime import timedelta, date
df['Dates'] = pd.to_datetime(df['Dates']) #this converts the values in the Dates column to datetime format

def daterange(start_date, end_date):
    for n in range(int ((end_date - start_date).days)):
        yield start_date + timedelta(n)

start_date = date(2015, 5, 1)
end_date = date(2015, 6, 2)
for daterange(start_date, end_date):
    df['Category'].value_counts() 

我想遍历“日期”列(A 列)并仅选择适合我的日期范围的日期。对于我的日期范围内的日期,我想计算每项犯罪的实例数(B 列)。完成此操作后,我想打印最常发生的犯罪。

建议?

最佳答案

首先,为了提高效率,请将索引设置为日期。假设您的日期列是 Date 并且犯罪类别是 Crime

# make pd.Series with date as the index and crimes as the values
d1 = df.set_index('Date').Crime.sort_index()

# function that uses date slicing and uses values counts
def most_freq(start, end):
    return d1[start:end].value_counts().index[0]

# demo
most_freq('2015-05', '2015-05')

'OTHER_OFFENSES'

关于python - 使用日期时间确定时间间隔内的最高频率事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786241/

相关文章:

java 检查 Date 实例是否有时间部分

shell - 在 UNIX shell 脚本中从日期中减去 1 小时

python - Pandas 合并数据框列

python - 使用新数据流沿着major_axis 增长pandas 面板?

python - python 2.4.3 中的临时文件语法

python - 如何在 numpy 中创建字符数组?

python - Flask 应用程序中的多进程旋转 2 个进程

python - 如何将 Django App 部署到 1and1 (ionos)

python - 将 isoformat 字符串转换为 python datetime 对象

python - 如何使用 python 将数据框值及其标题转换为列表?