多平台统一管理软件接口,如何实现多平台统一管理软件接口
307
2022-08-24
python_时间序列(Python时间序列图)
python_时间序列
Time Series##### 第11章 时间序列# 时间序列(time series)数据是⼀种重要的结构化数据形式,应# ⽤于多个领域,包括⾦融学、经济学、⽣态学、神经科学、物理# 学等。在多个时间点观察或测量到的任何事物都可以形成⼀段时# 间序列。很多时间序列是固定频率的,也就是说,数据点是根据# 某种规律定期出现的(⽐如每15秒、每5分钟、每⽉出现⼀# 次)。时间序列也可以是不定期的,没有固定的时间单位或单位# 之间的偏移量。时间序列数据的意义取决于具体的应⽤场景,主# 要有以下⼏种:# 时间戳(timestamp),特定的时刻。# 固定时期(period),如2007年1⽉或2010年全年。# 时间间隔(interval),由起始和结束时间戳表示。时期# (period)可以被看做间隔(interval)的特例。# 实验或过程时间,每个时间点都是相对于特定起始时间的⼀# 个度量。例如,从放⼊烤箱时起,每秒钟饼⼲的直径# pandas提供了许多内置的时间序列处理⼯具和数据算法。因# 此,你可以⾼效处理⾮常⼤的时间序列,轻松地进⾏切⽚/切# 块、聚合、对定期/不定期的时间序列进⾏重采样等。有些⼯具# 特别适合⾦融和经济应⽤,你当然也可以⽤它们来分析服务器⽇# 志数据import numpy as npimport pandas as pdnp.random.seed(12345)import matplotlib.pyplot as pltplt.rc('figure', figsize=(10, 6))PREVIOUS_MAX_ROWS = pd.options.display.max_rowspd.options.display.max_rows = 20np.set_printoptions(precision=4, suppress=True)Date and Time Data Types and Tools# 11.1 ⽇期和时间数据类型及⼯具# Python标准库包含⽤于⽇期(date)和时间(time)数据的数据# 418# 类型,⽽且还有⽇历⽅⾯的功能。我们主要会⽤到datetime、# time以及calendar模块。datetime.datetime(也可以简写为# datetime)是⽤得最多的数据类型:from datetime import datetimenow = datetime.now()nownow.year, now.month, now.day(2019, 12, 1)# datetime以毫秒形式存储⽇期和时间。timedelta表示两个# datetime对象之间的时间差:delta = datetime(2011, 1, 7) - datetime(2008, 6, 24, 8, 15)delta# delta.days# delta.secondsdatetime.timedelta(926, 56700)from datetime import timedeltastart = datetime(2011, 1, 7)start + timedelta(12)start - 2 * timedelta(12)datetime.datetime(2010, 12, 14, 0, 0)#####################################################Converting Between String and Datetimefrom datetime import datetime# 字符串和datetime的相互转换# 利⽤str或strftime⽅法(传⼊⼀个格式化字符串),datetime对象# 和pandas的Timestamp对象(稍后就会介绍)可以被格式化为字# 符串:stamp = datetime(2011, 1, 3)str(stamp)# 对日期进行格式化stamp.strftime('%Y-%m-%d')'2011-01-03'# datetime.strptime可以⽤这些格式化编码将字符串转换为⽇期:value = '2011-01-03'datetime.strptime(value, '%Y-%m-%d')datestrs = ['7/6/2011', '8/6/2011'][datetime.strptime(x, '%m/%d/%Y') for x in datestrs][datetime.datetime(2011, 7, 6, 0, 0), datetime.datetime(2011, 8, 6, 0, 0)]日期# datetime.strptime是通过已知格式进⾏⽇期解析的最佳⽅式。但# 是每次都要编写格式定义是很麻烦的事情,尤其是对于⼀些常⻅# 的⽇期格式。这种情况下,你可以⽤dateutil这个第三⽅包中的# 421 格式化日期# parser.parse⽅法(pandas中已经⾃动安装好了):from dateutil.parser import parseparse('2011-01-03')datetime.datetime(2011, 1, 3, 0, 0)parse('Jan 31, 1997 10:45 PM')datetime.datetime(1997, 1, 31, 22, 45)parse('6/12/2011', dayfirst=True)datetime.datetime(2011, 12, 6, 0, 0)imort pandas as pd# pandas通常是⽤于处理成组⽇期的,不管这些⽇期是# DataFrame的轴索引还是列。to_datetime⽅法可以解析多种不同# 的⽇期表示形式。对标准⽇期格式(如ISO8601)的解析⾮常# 快:import numpy as npimport pandas as pddatestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']pd.to_datetime(datestrs)DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)# 它还可以处理缺失值(None、空字符串等):idx = pd.to_datetime(datestrs + [None])idxidx[2]pd.isnull(idx)array([False, False, True])Time Series Basics11.2 时间序列基础# pandas最基本的时间序列类型就是以时间戳(通常以Python字# 符串或datatime对象表示)为索引的Series:# 11.2 时间序列基础# pandas最基本的时间序列类型就是以时间戳(通常以Python字# 符串或datatime对象表示)为索引的Series:from datetime import datetimedates = [datetime(2011, 1, 2), datetime(2011, 1, 5), datetime(2011, 1, 7), datetime(2011, 1, 8), datetime(2011, 1, 10), datetime(2011, 1, 12)]ts = pd.Series(np.random.randn(6), index=dates)ts2011-01-02 -0.2938912011-01-05 -1.7925732011-01-07 0.5983552011-01-08 -0.2881922011-01-10 1.1167602011-01-12 -0.155656dtype: float64# 这些datetime对象实际上是被放在⼀个DatetimeIndex中的:ts.indexDatetimeIndex(['2011-01-02', '2011-01-05', '2011-01-07', '2011-01-08', '2011-01-10', '2011-01-12'], dtype='datetime64[ns]', freq=None)# 跟其他Series⼀样,不同索引的时间序列之间的算术运算会⾃动# 按⽇期对⻬:# ts[::2] 是每隔两个取⼀个。# pandas⽤NumPy的datetime64数据类型以纳秒形式存储时间# 戳:ts + ts[::2]2011-01-02 -0.5877822011-01-05 NaN2011-01-07 1.1967092011-01-08 NaN2011-01-10 2.2335192011-01-12 NaNdtype: float64ts.index.dtypedtype('
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~