返回顶部
首页 > 资讯 > 精选 >Pandas中时间序列的处理方法
  • 871
分享到

Pandas中时间序列的处理方法

2023-06-15 09:06:01 871人浏览 安东尼
摘要

这篇文章主要为大家展示了“pandas中时间序列的处理方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Pandas中时间序列的处理方法”这篇文章吧。一、时间序列数据的生成pd.date_ran

这篇文章主要为大家展示了“pandas中时间序列的处理方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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 pdimport numpy as npdf = 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使用现有列设置索引

  • 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

四、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参数说明:

  • 参数subset:用来指定特定的列,默认所有列

  • 参数keep:first和last表示是选择最前一项还是最后一项保留,默认first

  • 参数inplace:是直接在原来数据上修改还是保留一个副本,默认为False

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 14Data columns (total 2 columns): #   Column  Non-Null Count  Dtype---  ------  --------------  ----- 0   Y       10 non-null     int32 1   Z       10 non-null     int32dtypes: 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 插值

  • df.interpolate(method=‘linear', axis=0, limit=None, inplace=False, limit_direction=‘forward', limit_area=None, downcast=None, **kwargs)

  • method参数解释

    • linear:忽略索引,线性等距插值

    • time:在以天或者更高频率的数据上插入给定的时间间隔长度数据

    • index, values:使用索引的实际数值

    • pad:使用现有值填写NaN

    • nearest, zero, slinear, quadratic, cubic, spline, barycentric, polynomial:传递给scipy.interpolate.interp1d。这些方法使用索引的数值。polynomial和spline都要求您还指定一个顺序(int),例如 ,df.interpolate(method=‘polynomial', order=5)

    • krogh,piecewise_polynomial,spline,pchip,akima:包括类似名称的SciPy插值方法。

    • from_derivatives:指 scipy.interpolate.BPoly.from_derivatives,它替换了scipy 0.18中的'piecewise_polynomial'插值方法

  • axis : {0或'index',1或'columns',None},默认为None;沿轴进行interpolate。

  • limit: int;要填充的连续NaN的最大数量。必须大于0

  • inplace : bool,默认为False;如果可以,更新现有数据

  • limit_direction : {‘forward',‘backward',‘both'},默认为'forward';如果指定了限制,则将沿该方向填充连续的NaN

  • limit_area : {None, ‘inside', ‘outside'}, 默认为None;如果指定了限制,则连续的NaN将填充此限制。

  • None:无填充限制

  • inside:仅填充有效值包围的NaN

  • outside: 仅在有效值之外填充NaN

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中时间序列的处理方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Pandas中时间序列的处理方法

本文链接: https://lsjlt.com/news/279381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Pandas中时间序列的处理方法
    这篇文章主要为大家展示了“Pandas中时间序列的处理方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Pandas中时间序列的处理方法”这篇文章吧。一、时间序列数据的生成pd.date_ran...
    99+
    2023-06-15
  • Pandas中时间序列的处理大全
    目录一、时间序列数据的生成二、Pandas设置索引三、 时间序列数据的截取四、Pandas重复值处理4.1 查询是否有重复值4.2 去除重复值五、Pandas缺失值处理5.1 缺失值查询六、pandas统计计算方法七...
    99+
    2022-06-02
    pandas时间序列处理 pandas时间序列分析 python 时间序列图
  • 如何进行Pandas库中时间序列的处理
    这期内容当中小编将会给大家带来有关如何进行Pandas库中时间序列的处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与...
    99+
    2023-06-02
  • 怎么理解Pandas时间序列
    本篇内容主要讲解“怎么理解Pandas时间序列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Pandas时间序列”吧!依托 NumPy 的 datetime64、timedelta64 ...
    99+
    2023-06-01
  • Pandas处理时间序列数据操作详解
    目录前言一、获取时间二、时间索引三、时间推移前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档。而Pandas是处理...
    99+
    2024-04-02
  • Pandas 时间序列分析中的resample函数
    Pandas 中的resample函数用于各种频率的转换工作。 resample的参数如下: 参数描述freq转换频率axis=0重采样的轴closed=None在降采样中,设置各时...
    99+
    2024-04-02
  • pandas时间序列之pd.to_datetime()的实现
    目录解析来自各种来源和格式的时间序列信息时间序列解析之小试牛刀时间序列解析之磨刀霍霍1. 指定识别的format2. 遇到DataFrame3. 遇到不能识别的处理方法4. orig...
    99+
    2024-04-02
  • Python时间序列数据的预处理方法总结
    目录前言时间序列中的缺失值时间序列去噪滚动平均值傅里叶变换时间序列中的离群值检测基于滚动统计的方法孤立森林K-means 聚类面试问题总结前言 时间序列数据随处可见,要进行时间序列分...
    99+
    2024-04-02
  • python Pandas时序数据处理的方法有哪些
    这篇文章主要介绍“python Pandas时序数据处理的方法有哪些”,在日常操作中,相信很多人在python Pandas时序数据处理的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-02
  • Cassandra中的时间序列数据怎么处理
    在Cassandra中处理时间序列数据时,一般可以使用以下几种方法: 使用时间戳作为行键:可以将时间戳作为行键,这样可以方便按时...
    99+
    2024-04-02
  • PyTorch中怎么处理时间序列数据
    在PyTorch中处理时间序列数据通常需要使用torch.utils.data.Dataset和torch.utils.data.D...
    99+
    2024-03-05
    PyTorch
  • MariaDB中如何处理时间序列数据
    在MariaDB中处理时间序列数据通常会使用日期和时间函数来操作数据。以下是一些常用的日期和时间函数: NOW():返回当前日期和...
    99+
    2024-04-09
    MariaDB
  • Torch中如何处理时间序列数据
    在Torch中处理时间序列数据通常涉及到使用特定的库或模块来进行数据预处理、建模和训练。以下是一些处理时间序列数据的常见方法: ...
    99+
    2024-04-02
  • R语言时间序列中时间年、月、季、日的处理操作
    1、年 pt<-ts(p, freq = 1, start = 2011) 2、月 pt<-ts(p,frequency=12,start=c(2011,1))...
    99+
    2024-04-02
  • Pandas.DataFrame时间序列数据处理的实现
    目录如何将一列现有数据指定为DatetimeIndex读取CSV时如何指定DatetimeIndex关于pandas.Series将pandas.DataFrame,pandas.S...
    99+
    2023-02-23
    Pandas.DataFrame时间序列 Pandas时间序列处理
  • Cassandra如何处理时间序列数据
    Cassandra是一个分布式数据库系统,通常用于处理大规模数据和高并发读写操作。在处理时间序列数据时,Cassandra可以使用以...
    99+
    2024-04-09
    Cassandra
  • Grafana怎么处理时间序列数据
    Grafana 是一个开源的数据可视化和监控工具,可以用于处理时间序列数据。在 Grafana 中,您可以通过以下方式处理时间序列数...
    99+
    2024-04-02
  • CNTK怎么处理序列数据和时间序列数据
    CNTK(Microsoft Cognitive Toolkit)是一个深度学习工具包,可以用来处理序列数据和时间序列数据。以下是一...
    99+
    2024-04-02
  • PyTorch中怎么处理时间序列数据任务
    在PyTorch中处理时间序列数据任务通常需要使用torch.nn.RNN, torch.nn.LSTM, torch.nn.GRU...
    99+
    2024-03-05
    PyTorch
  • Keras中如何处理时间序列预测任务
    在Keras中处理时间序列预测任务通常涉及到使用循环神经网络(RNN)或卷积神经网络(CNN)来构建模型。下面是一个简单的使用RNN...
    99+
    2024-03-08
    Keras
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作