• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    pandas 按日期范围筛选数据的实现

    pandas 是 python 中一个功能强大的库,这里就不再复述了,简单介绍下用日期范围筛选 pandas 数据。

    日期转换

    用来筛选的列是 date 类型,所以这里要把要筛选的日期范围从字符串转成 date 类型

    比如我的数据包含列名为 trade_date,从 20050101 - 20190926 的数据,我要筛选出 20050606 - 20071016 的数据,那么,先如下转换数据类型:

    s_date = datetime.datetime.strptime('20050606', '%Y%m%d').date()
    e_date = datetime.datetime.strptime('20071016', '%Y%m%d').date()
    

    数据筛选

    非常简单,一行代码就搞定了:

    df = df[(df['tra_date'] >= s_date)  (df['tra_date'] = e_date)]

    注意事项

    pandas提取某段时间范围数据的五种方法

    import pandas as pd
     
    #读取文件
    df = pd.read_csv('./TianQi.csv')
     
    #获取九月份数据的几种方法
    #方法一  使用行索引切片,['2019/9/1':'2019/9/30'],缺点是要求日期必须是连续的。为了方便查看取前5条,以下其他方法均取前5条,由于未进行排序,顺序会有差异
    df.set_index('日期',inplace=True)
    print(df['2019/9/1':'2019/9/30'].head())  #或者print(df.loc['2019/9/1':'2019/9/30',:]) 
    '''
    打印:
         最高温度 最低温度  天气  风向 风级 空气质量
    日期                  
    2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良
    2019/9/2 34℃ 20℃   晴  南风 2级  良
    2019/9/3 33℃ 20℃   晴 东南风 2级  良
    2019/9/7 34℃ 21℃   晴 西南风 2级  良
    2019/9/8 35℃ 22℃ 晴~多云 东北风 2级  良
    '''
     
    #方法二  利用列表生成式和startwith('2019/9')生成bool列表,缺点,比较麻烦。
    print(df.loc[[True if i.startswith('2019/9') else False for i in df.index.tolist()],:].head())
    '''
    打印:
         最高温度 最低温度  天气  风向 风级 空气质量
    日期                  
    2019/9/4 32℃ 19℃   晴 东南风 2级  良
    2019/9/5 33℃ 20℃   晴 东南风 2级  良
    2019/9/6 33℃ 20℃   晴 东南风 1级  良
    2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良
    2019/9/2 34℃ 20℃   晴  南风 2级  良
    '''
     
    #方法三  利用pandas的str和startswith('2019/9')|contains('2019/9')。
    df1 = pd.read_csv('./TianQi.csv')
    print(df1[df1['日期'].str.startswith('2019/9')].head())
    '''
    打印:
         日期 最高温度 最低温度  天气  风向 风级 空气质量
    243 2019/9/4 32℃ 19℃   晴 东南风 2级  良
    244 2019/9/5 33℃ 20℃   晴 东南风 2级  良
    245 2019/9/6 33℃ 20℃   晴 东南风 1级  良
    246 2019/9/1 33℃ 19℃ 多云~晴 西南风 2级  良
    247 2019/9/2 34℃ 20℃   晴  南风 2级  良
    '''
     
    #方法四  讲日期转换成datetime类型
    df1['日期'] = pd.to_datetime(df1['日期'])
    df1.set_index('日期',inplace=True,drop=True)
    #print(df1['2019'])  #取2019年数据,或者df.loc['2019']
    print(df1['2019/09'].head())  
    '''
     取201909月数据,其他变形写法df['2019-9'] df['2019-09'] df['2019/9'] df.loc['2019-9',:] df.loc['2019-09',:] df.loc['2019/09',:] df.loc['2019/9',:]
    打印:
          最高温度 最低温度  天气  风向 风级 空气质量
    日期                   
    2019-09-04 32℃ 19℃   晴 东南风 2级  良
    2019-09-05 33℃ 20℃   晴 东南风 2级  良
    2019-09-06 33℃ 20℃   晴 东南风 1级  良
    2019-09-01 33℃ 19℃ 多云~晴 西南风 2级  良
    2019-09-02 34℃ 20℃   晴  南风 2级  良
    '''
    #注意如果要获取某一天的数据,则必须使用切片,比如df['2019/9/1':'2019/9/1'] 
    '''
    获取一段时间
    df1.truncate(after = '2019-9-01') # 返回 after 以前的数据
    df1.truncate(before = '2019-9-01') # 返回 before 以后的数据
    df1['20190901':'2019/9/10']
    '''
     
    #方法五  #读取文件时,通过parse_dates=['日期'],将日期转化为datetime类型,相当于 pd.to_datetime。同时可以使用index_col将那一列作为的行索引,相当有set_index。
    df2 = pd.read_csv('./TianQi.csv',parse_dates=['日期'])
    df2['年'] = df2['日期'].dt.year
    df2['月'] = df2['日期'].dt.month
    qstr = "年=='2019' and 月=='9'"
    print(df2.query(qstr).head())
    '''
    打印:
          日期 最高温度 最低温度  天气  风向 风级 空气质量   年 月
    243 2019-09-04 32℃ 19℃   晴 东南风 2级  良 2019 9
    244 2019-09-05 33℃ 20℃   晴 东南风 2级  良 2019 9
    245 2019-09-06 33℃ 20℃   晴 东南风 1级  良 2019 9
    246 2019-09-01 33℃ 19℃ 多云~晴 西南风 2级  良 2019 9
    247 2019-09-02 34℃ 20℃   晴  南风 2级  良 2019 9
    '''
     
    '''
    dt的其他常用属性和方法如下:
    df['日期'].dt.day  # 提取日期
    df['日期'].dt.year # 提取年份
    df['日期'].dt.hour # 提取小时
    df['日期'].dt.minute # 提取分钟
    df['日期'].dt.second # 提取秒
    df['日期'].dt.week # 一年中的第几周
    df['日期'].dt.weekday # 返回一周中的星期几,0代表星期一,6代表星期天
    df['日期'].dt.dayofyear # 返回一年的第几天
    df['日期'].dt.quarter # 得到每个日期分别是第几个季度。
    df['日期'].dt.is_month_start # 判断日期是否是每月的第一天
    df['日期'].dt.is_month_end # 判断日期是否是每月的最后一天
    df['日期'].dt.is_leap_year # 判断是否是闰年
    df['日期'].dt.month_name() # 返回月份的英文名称
    df['日期'].dt.to_period('Q') # M 表示月份,Q 表示季度,A 表示年度,D 表示按天
    df['日期'].dt.weekday_name # 返回星期几的英文 由于pandas版本问题,改变pandas版本在cmd中输入:pip install --upgrade pandas==0.25.3
    Series.dt.normalize() # 函数将给定系列对象中的时间转换为午夜。
    '''

    到此这篇关于pandas 按日期范围筛选数据的实现的文章就介绍到这了,更多相关pandas 日期范围筛选内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python+pandas+时间、日期以及时间序列处理方法
    • python时间日期函数与利用pandas进行时间序列处理详解
    • pandas 获取季度,月度,年度首尾日期的方法
    • python pandas 时间日期的处理实现
    • pandas 快速处理 date_time 日期格式方法
    • python+pandas生成指定日期和重采样的方法
    • pandas 对日期类型数据的处理方法详解
    • pandas实现将日期转换成timestamp
    • pandas pivot_table() 按日期分多列数据的方法
    • Python Pandas高级教程之时间处理
    上一篇:基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
    下一篇:pandas统计重复值次数的方法实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    pandas 按日期范围筛选数据的实现 pandas,按,日期,范围,筛选,