Pandas 日期筛选功能(Pandas Filtering Pandas DataFrames on dates)
在本文中,我们将介绍Pandas在日期筛选方面的强大功能,帮助你快速、准确地筛选出所需数据。
阅读更多:Pandas 教程
Pandas的日期对象
在Pandas中,日期对象是一个单独的数据类型。Pandas支持多种日期格式(如datetime、numpy.datetime64、pandas.Timestamp等)。我们可以使用这些日期对象进行日期筛选,而不是使用日期字符串或日期类型。这种方式能够确保日期格式的一致性,并提供一些方便、快捷的方法。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'date': ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],
'value': [1, 2, 3, 4, 5]
})
# 将字符串列转换为日期对象
df['date'] = pd.to_datetime(df['date'])
# 筛选出2020年1月1日之后的数据
df[df['date'] > pd.to_datetime('2020-01-01')]
筛选特定日期范围的数据
Pandas提供了多种筛选日期范围的方法。我们可以使用pandas.DataFrame.loc和pandas.DataFrame.iloc方法,或者使用pandas.DataFrame.query方法。
# 选取2020年1月1日到2020年1月3日之间的数据
df.loc[(df['date'] >= pd.to_datetime('2020-01-01')) & (df['date'] <= pd.to_datetime('2020-01-03'))]
# 选取2020年1月1日到2020年1月3日之间的数据(另一种写法)
df.iloc[(df['date'] >= pd.to_datetime('2020-01-01')) & (df['date'] <= pd.to_datetime('2020-01-03')).values]
# 选取2020年1月1日到2020年1月3日之间的数据(使用query方法)
df.query('date >= "2020-01-01" and date <= "2020-01-03"')
筛选特定日期的数据
除了按日期范围筛选数据外,有时我们也需要按照特定日期筛选数据。下面是一些实用的筛选方法。
# 筛选出2020年1月1日的数据
df[df['date'] == pd.to_datetime('2020-01-01')]
# 筛选出2020年1月的数据
df[df['date'].dt.month == 1]
# 筛选出2020年的数据
df[df['date'].dt.year == 2020]
# 筛选出周一的数据
df[df['date'].dt.weekday == 0]
筛选最近n天/周/月的数据
如果需要筛选最近一段时间的数据,我们可以使用pandas.Timestamp.now方法获取当前的时间,再使用pandas.Timedelta方法获取需要的时间间隔。下面是一些例子。
# 筛选出最近7天的数据
df[df['date'] >= pd.Timestamp.now() - pd.Timedelta(days=7)]
# 筛选出最近两周的数据
df[df['date'] >= pd.Timestamp.now() - pd.Timedelta(weeks=2)]
# 筛选出最近一个月的数据
df[df['date'] >= pd.Timestamp.now() - pd.offsets.MonthBegin()]
# 筛选出最近三个月的数据
df[df['date'] >= pd.Timestamp.now() - pd.DateOffset(months=3)]
总结
Pandas提供了丰富的日期筛选方法,能够让我们快速地按照需求获取数据。在使用日期筛选功能时,最好将日期列转换为日期对象,以确保日期格式的一致性。如果需要筛选最近一段时间的数据,可以使用pandas.Timestamp.now获取当前时间和pandas.Timedelta获取时间间隔。同时,也可以使用.dt方法获取日期属性,如年、月、日、星期等信息进行筛选。
在实际应用中,经常需要大量的数据处理和清洗工作,而Pandas提供了丰富的功能和方法,可以帮助我们更高效、精确地完成这些任务。掌握Pandas的日期筛选功能,是非常有用的技能。
参考资料
- Pandas Date-Time
- Select rows based on a comparison with current time using pandas
- Timeseries / Date functionality
- Working with Time Series
极客教程