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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Pandas中时间序列的处理大全

    一、时间序列数据的生成

    pd.date_ranges生成时间序列

    频率别名 描述
    B 工作日频率
    C 自定义工作日频率
    D 日历日频率
    W 每周频率
    M 每月最后一个日历日
    SM 每半个月最后一个日历日(15日和月末)
    BM 每月最后一个工作日
    CBM 自定义每月最后一个工作日
    MS 每月第一个日历日
    SMS 每半月第一个日历日(第1和第15)
    BMS 每月第一个工作日
    CBMS 自定义每月第一个工作日
    Q 每季度最后一个月的最后一个日历日
    BQ 每季度最后一个月的最后一个工作日
    QS 每季度最后一个月的第一个日历日
    BQS 每季度最后一个月的第一个工作日
    A, Y 每年的最后一个日历日
    BA, BY 每年的最后一个工作日
    AS, YS 每年的第一个日历日
    BAS, BYS 每年的第一个工作日
    BH 工作日按“时”计算频率
    H 每小时频率
    T, min 每分钟频率
    S 每秒频率
    L, ms 毫秒频率
    U, us 微秒频率
    N 纳秒频率
    import pandas as pd
    import numpy as np
    df = pd.DataFrame( data=np.random.randint(1,20,10),
                      index=pd.date_range(start="20/01/2021",periods=10,freq="M"),) 
    print(df)
    

                 0
    2021-01-31   1
    2021-02-28   6
    2021-03-31  12
    2021-04-30   5
    2021-05-31   7
    2021-06-30   4
    2021-07-31   9
    2021-08-31   7
    2021-09-30  18
    2021-10-31  10

                 0
    count  10.00000
    mean    7.90000
    std     4.72464
    min     1.00000
    25%     5.25000
    50%     7.00000
    75%     9.75000
    max    18.00000

    二、Pandas设置索引

    创建时添加索引

    pd.DataFrame(...,index=[],...)

    df.set_index使用现有列设置索引

    df.set_index(["X"],inplace=True)
    df.set_index(["X","Y"],inplace=True)
    

    df.reset_index可以还原索引

    df.reset_index("X")
    

    三、 时间序列数据的截取

    df.truncate过滤数据

    df.truncate(before="2021-5",after="2021-9")
    

               0
    2021-05-31  7
    2021-06-30  4
    2021-07-31  9
    2021-08-31  7

    df.loc索引过滤

    df.loc["2021-5":]
    

                 0
    2021-05-31   7
    2021-06-30   4
    2021-07-31   9
    2021-08-31   7
    2021-09-30  18
    2021-10-31  10

    四、Pandas重复值处理

    4.1 查询是否有重复值

    duplicated()方法判断

    # 判断dataframe数据整行是否重复
    df.duplicated()
    # dataframe数据某列是否重复
    df.columns_name.duplicated()
    # 判断dataframe数据多列数据是否重复(多列组合查)
    df.duplicated(subset = ['n1','n2'])
    

    groupby().count()

    df.groupby('columns').count()>1
    

    4.2 去除重复值

    drop_duplicats参数说明:

    df.drop_duplicats(subset=['name1','name2'],keep='last',inplace=True)
    

    按照index索引去重

    df.index.duplicated(keep='last')
    
    
    

    五、Pandas缺失值处理

    5.1 缺失值查询

    df.info查询各列的信息

    df.info()
    
    # res
    class 'pandas.core.frame.DataFrame'>
    Int64Index: 10 entries, 19 to 14
    Data columns (total 2 columns):
     #   Column  Non-Null Count  Dtype
    ---  ------  --------------  -----
     0   Y       10 non-null     int32
     1   Z       10 non-null     int32
    dtypes: int32(2)
    memory usage: 160.0 bytes
    

    df.isnull判断是否是空值

    df.isnull().any() # 筛选出缺失值的列
    df.isna().any() # 筛选出缺失值的列
    

    df.empty判断是否有空值

    df.empty
    

    5.2 缺失值填充

    ffill 空值取前面的值

    df.ffill()
    

    bfill 空值取后面的值

    df.bfill()
    

    fillna 指定值填充

    df.fillna(1)
    df.fillna({'A': 0, 'B': 1, 'C': 2, 'D': 3}) # 指定列填充
    

    interpolate 插值

    dff.interpolate(method='polynomial',order=2)
    

    删除缺失值

    df.dropna(how='any')
    

    六、pandas统计计算方法

    方法 说明
    count 非NaN值的数理
    describe 列计算统计汇总
    min、max 最小值和最大值
    argmin、argmax 最小值和最大值索引(int)
    idxmin、idxmax 最小值和最大值索引
    quantile 分位数([0,1],0.25下四分为)
    sum 总和
    mean 均值
    median 0.5分位数,中位数
    mad 根据均值计算绝对离差
    var 方差
    std 标准差
    df.describe()
    

    七、Pandas数据重采样

    重采样就是基于时间数据由一个频率转换到另一个频率的方法,分为降采样和升采样。

    降采样:高频率===>低频率,如频率日变为月,需要指定统计函数如sum

    df.resample("M").mean()
    

    升采样:低频率===>高频率,如频率月变为日,需要进行缺失值填充

    df.resample("D").asfreq().fillna(1)
    

    总结

    到此这篇关于Pandas中时间序列处理的文章就介绍到这了,更多相关Pandas时间序列处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python+pandas+时间、日期以及时间序列处理方法
    • python时间日期函数与利用pandas进行时间序列处理详解
    • pandas基于时间序列的固定时间间隔求均值的方法
    • Pandas时间序列:时期(period)及其算术运算详解
    • python Pandas库基础分析之时间序列的处理详解
    • Pandas时间序列基础详解(转换,索引,切片)
    • python pandas 对时间序列文件处理的实例
    • Pandas时间序列重采样(resample)方法中closed、label的作用详解
    • Pandas时间序列:重采样及频率转换方式
    上一篇:教你如何利用python进行数值分析
    下一篇:Python必备基础之闭包和装饰器知识总结
  • 相关文章
  • 

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

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

    Pandas中时间序列的处理大全 Pandas,中,时间序列,的,处理,