zoukankan      html  css  js  c++  java
  • 数据分析(6)-Pandas日期数据处理

    Pandas 有着强大的日期数据处理功能,主要包括以下三个方面:按日期筛选数据、按日期显示数据、按日期统计数据

    1、读取数据

    import pandas as pd
    
    df = pd.read_csv('date.csv', header=None)
    print(df.head(2))
    
    >>>输出结果:
    0 1
    0 2013-10-24 3
    1 2013-10-25 4
    

    2、整理数据

    df.columns = ['date','number']
    df['date'] = pd.to_datetime(df['date']) # 将数据类型转换为日期类型
    df = df.set_index('date') # 将date设置为index
    
    print(type(df))
    print(df.index)
    print(type(df.index))
    
    >>>输出结果:
    <class 'pandas.core.frame.DataFrame'>
    DatetimeIndex(['2013-10-24', '2013-10-25', '2013-10-29', '2013-10-30',...'2017-02-14', '2017-02-22'],dtype='datetime64[ns]', name='date', length=425, freq=None)
    <class 'pandas.tseries.index.DatetimeIndex'> 

    3、构造Serises

    s = pd.Series(df['number'], index=df.index)
    print(type(s))
    s.head(2)
    
    >>>输出结果:
    <class 'pandas.core.series.Series'>
    date
    2013-10-24 3
    2013-10-25 4
    Name: number, dtype: int64
    

    4、按日期筛选数据

    # 获取某年的数据
    print(df['2013'].head(2)) # 获取2013年的数据
    print(df['2016':'2017'].head(2)) # 获取2016至2017年的数据
    
    # 获取某月的数据
    print(df['2013-11']) # 获取某月的数据
    
    # 获取某天的数据
    print(s['2013-11-06'])
    
    dataframe 的 truncate 函数可以获取某个时期之前或之后的数据,或者某个时间区间的数据,但一般建议直接用切片(slice),这样更为直观,方便
    print(df.truncate(after = '2013-11'))
    

    5、按日期显示数据

    1)to_period() 方法

    print(df.to_period('Q').head()) # 按季度显示,但不统计
    
    print(df.to_period('A').head()) # 按年度显示,但不统计
    

    2)asfreq() 方法

    df_period.index.asfreq('A') # 按年度频率显示,'A'默认是'A-DEC',其他如'A-JAN'
    
    df_period.index.asfreq('Q') # 按季度频率显示,'Q' 默认是'Q-DEC',其他如“Q-SEP”,“Q-FEB”
    
    df_period.index.asfreq('M') # 按月度频率显示,按月份显示
    
    df_period.index.asfreq('B', how='start') # 按工作日显示,按工作日期显示
    df_period.index.asfreq('B', how='end') # 按工作日显示,按工作日期显示
    

    6、按日期统计数据

    1)统计

    print(df.resample('w').sum().head()) # 按周统计
    
    print(df.resample('M').sum().head())
    # ”MS”是每个月第一天为开始日期,”M”是每个月最后一天
    
    print(df.resample('Q').sum().head())
    # ”QS”是每个季度第一天为开始日期,”Q”是每个季度最后一天
    
    print(df.resample('AS').sum())
    # ”AS”是每年第一天为开始日期, ”A”是每年最后一天
    

    2)显示

    print(df.resample('AS').sum().to_period('A'))
    # 按年统计并显示
    
    print(df.resample('Q').sum().to_period('Q').head())
    # 按季度统计并显示
    
    print(df.resample('M').sum().to_period('M').head())
    # 按月度统计并显示
    

     

     

     

      

  • 相关阅读:
    设计模式研究
    requests模块请求常用参数的写法整理
    python程序打包exe文件
    爬虫响应信息乱码解决方式
    Vue-cli父子组件之间传参
    MYSQL事件隔离级别以及复读,幻读,脏读的理解
    [NOIP2009] 提高组 洛谷P1073 最优贸易
    [NOIP2009] 提高组 洛谷P1071 潜伏者
    [NOIP2009] 普及组
    洛谷P3386 【模板】二分图匹配
  • 原文地址:https://www.cnblogs.com/Iceredtea/p/12199436.html
Copyright © 2011-2022 走看看