本文主要介绍个人项目中使用pandas通过日期处理数据的知识总结与回顾,主要包含以下两个问题
- 问题 1:如何取近 1/3/5/7 天以及 1/3/6/12 月数据
- 问题 2:如何生成包含随机日期的列
问题2:
- 在叙述问题 1 之前我们先通过问题 2 生成问题 1需要的日期数据
- 首先定义随机日期开始与结束时间,定义时间间隔d,根据生成0-d之间的随机整数来生成随机日期,unit 是设定精确单位。

问题1
- 这个问题主要是生成时序特征,如近 1/3/5/7 天访问次数统计:
- 记录写文章时候遇到的一个有趣的 bug,参数 days 写成 day 得到的结果

- 得到近1/3/5/7 天日期后,再通过日期筛选数据(days 该写成 1 哈)

代码
df = pd.DataFrame({"Name":["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory","Mallory", "Bob", "Mallory","Bob", "Mallory", "Mallory", "Bob","Mallory","Bob", "Mallory"],
"City":["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland","Seattle", "Seattle", "Portland","Seattle", "Portland", "Seattle", "Seattle","Portland", "Seattle", "Seattle"]})
start_dt = pd.to_datetime('2023-07-10')
end_dt = pd.to_datetime('2024-07-10')
d = (end_dt - start_dt).days + 1
df["random_time"] = start_dt + pd.to_timedelta(np.random.randint(d,size=16),unit='d')
cur_date = pd.to_datetime('2024-07-10')
one_day_ago = cur_date - pd.DateOffset(days=3)
df1 = df[df['random_time'] >= one_day_ago]
结尾
- 以上涉及的函数可能还有更多的用法,本文不是全面介绍函数的文章只是顺带提及涉及的函数,参数,仅供参考。