Pandas时间序列处理

pd.date_ranges生成时间序列

  • time格式:年月日分隔符号可以是”-“,”/”,空格这三种格式(年月日、日月年、月日年都可以);时分秒只能用”:”分隔,顺序只能是时分秒。
  • start:起始时间(time)
  • end:终止时间(time)
  • periods:期数(int),使用时只能出现start或者end,两者不能同时出现
  • freq:频率(numY,num年;numM,num月;numD,num日),详细参数见下表

频率别名描述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
  • 创建时添加索引
pd.DataFrame(...,index=[],...)
  • df.set_index使用现有列设置索引
  • keys:列名,多个列用[name1,name2]
  • drop:设置升序(True)、降序(False)
  • inplace:替换原变量(True),不替换(False)
df.set_index(["X"],inplace=True)
df.set_index(["X","Y"],inplace=True)
  • df.reset_index可以还原索引
df.reset_index("X")

df.truncate过滤数据

  • before:过滤之前的数据(time)
  • after:过滤之后的数据(time)
  • axis:列(columns),行(index)
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

4.1 查询是否有重复值

duplicated()方法判断


df.duplicated()

df.columns_name.duplicated()

df.duplicated(subset = ['n1','n2'])

groupby().count()

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

4.2 去除重复值

drop_duplicats参数说明:

  • 参数subset:用来指定特定的列,默认所有列
  • 参数keep:first和last表示是选择最前一项还是最后一项保留,默认first
  • 参数inplace:是直接在原来数据上修改还是保留一个副本,默认为False
df.drop_duplicats(subset=['name1','name2'],keep='last',inplace=True)

按照index索引去重

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

5.1 缺失值查询

df.info查询各列的信息

`python
df.info()


Int64Index: 10 entries, 19 to 14
Data columns (total 2 columns):

Original: https://blog.csdn.net/qq_44285092/article/details/117638171
Author: 而又何羡乎
Title: Pandas时间序列处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/756344/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球