Pandas中时间序列的处理方法

发布时间:2021-06-07 14:39:25 作者:小新
来源:亿速云 阅读:241

这篇文章主要为大家展示了“Pandas中时间序列的处理方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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均值
median0.5分位数,中位数
mad根据均值计算绝对离差
var方差
std标准差
df.describe()

七、Pandas数据重采样

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

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

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

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

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

以上是“Pandas中时间序列的处理方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Pandas中时间序列基础的示例分析
  2. Pandas时间序列中时期及其算术运算的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pandas

上一篇:Java中抛出异常和捕获异常有什么区别

下一篇:Flutter底部弹窗ModelBottomSheet怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》