文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pandas中时间序列的处理大全

2022-06-02 22:32

关注
目录

一、时间序列数据的生成

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时间序列处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯