📅  最后修改于: 2023-12-03 15:40:22.723000             🧑  作者: Mango
本篇介绍如何编写一个Python程序,用于查找一个月中每天发生的次数。我们将使用Python中的datetime模块和pandas库,让我们开始吧!
作为示范,我们使用一些随机事件并随机生成一些日期和时间。数据应该包含一个日期时间戳和一个字符串,对应该事件的说明。你可以按需生成这些数据。
import random
from datetime import datetime, timedelta
import pandas as pd
# 生成一个月中的随机日期时间戳
start_date = datetime(2019, 1, 1)
end_date = datetime(2019, 1, 31)
dates = []
while start_date <= end_date:
dates.append(start_date)
start_date += timedelta(minutes=random.randint(1, 1440))
# 生成随机事件
events = ['打游戏', '看电影', '学英语', '写代码', '锻炼']
# 生成带有日期时间戳的随机数据
data = [(date, random.choice(events)) for date in dates]
有了数据,我们现在需要将其转换为pandas的DataFrame。我们还将在此步骤中解析日期时间戳并从中提取日期。
# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=['datetime', 'event'])
# 解析日期和时间
df['date'] = df['datetime'].apply(lambda x: x.strftime('%Y-%m-%d'))
# 显示DataFrame的前5行
print(df.head())
此时我们可以看到一个示例输出,其中每一行表示一个事件和其对应日期:
datetime event date
0 2019-01-01 00:35:00 学英语 2019-01-01
1 2019-01-01 01:54:00 看电影 2019-01-01
2 2019-01-01 03:12:00 打游戏 2019-01-01
3 2019-01-01 03:45:00 打游戏 2019-01-01
4 2019-01-01 04:39:00 打游戏 2019-01-01
现在我们可以计算每天发生的事件数量了。我们使用pandas的groupby功能和size函数,按日期分组并计算每组的大小即可。
# 按日期分组并计算每天事件的数量
events_per_day = df.groupby('date').size().reset_index(name='counts')
# 显示每天事件数量的DataFrame
print(events_per_day.head())
我们可以看到这个示例输出,其中每行表示一个日期和相应的事件数量:
date counts
0 2019-01-01 114
1 2019-01-02 130
2 2019-01-03 142
3 2019-01-04 144
4 2019-01-05 115
组合起来,我们的程序如下所示:
import random
from datetime import datetime, timedelta
import pandas as pd
# 生成一个月中的随机日期时间戳
start_date = datetime(2019, 1, 1)
end_date = datetime(2019, 1, 31)
dates = []
while start_date <= end_date:
dates.append(start_date)
start_date += timedelta(minutes=random.randint(1, 1440))
# 生成随机事件
events = ['打游戏', '看电影', '学英语', '写代码', '锻炼']
# 生成带有日期时间戳的随机数据
data = [(date, random.choice(events)) for date in dates]
# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=['datetime', 'event'])
# 解析日期和时间
df['date'] = df['datetime'].apply(lambda x: x.strftime('%Y-%m-%d'))
# 按日期分组并计算每天事件的数量
events_per_day = df.groupby('date').size().reset_index(name='counts')
# 显示每天事件数量的DataFrame
print(events_per_day.head())
输出结果如下:
date counts
0 2019-01-01 114
1 2019-01-02 130
2 2019-01-03 142
3 2019-01-04 144
4 2019-01-05 115
现在我们已经成功地使用Python和pandas计算了一个月中每天发生的事件数量!