利用Python进行数据分析—— 时间序列(14)

本文介绍了Python中用于处理日期和时间数据的类型以及时间序列的基础知识,包括如何操作和分析时间序列数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日期和时间数据的类型及工具

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: from datetime import datetime

In [4]: now = datetime.now()

In [5]: now
Out[5]: datetime.datetime(2020, 8, 10, 15, 41, 41, 676049)

In [7]: now.year, now.month, now.day
Out[7]: (2020, 8, 10)


In [16]: delta = datetime(2020, 8, 10) - datetime(2018, 9, 3, 9, 12)

In [17]: delta
Out[17]: datetime.timedelta(706, 53280)

In [18]: delta.days
Out[18]: 706

In [19]: delta.seconds
Out[19]: 53280

In [20]: stamp = datetime(2020, 8, 10)

In [21]: str(stamp)
Out[21]: '2020-08-10 00:00:00'

In [23]: stamp.strftime('%Y-%m-%d')
Out[23]: '2020-08-10'

# dateutil能够解析出大量人类可以理解的日期表
In [24]: from dateutil.parser import parse

In [25]: parse('2020-08-10')
Out[25]: datetime.datetime(2020, 8, 10, 0, 0)

In [27]: parse('Aug 10, 2020 15:58')
Out[27]: datetime.datetime(2020, 8, 10, 15, 58)

时间序列基础

In [28]: dates = [datetime(2020, 1, 2), datetime(2019, 10, 1), datetime(2019, 10 ,31)]

In [29]: ts = pd.Series(np.random.randn(3), index=dates)

In [30]: ts
Out[30]:
2020-01-02   -0.244286
2019-10-01    1.817801
2019-10-31    1.014650
dtype: float64

# datetime对象可以被放入DatetimeIndex中
In [31]: ts.index
Out[31]: DatetimeIndex(['2020-01-02', '2019-10-01', '2019-10-31'], dtype='datetime64[ns]', freq=None)

In [32]: ts[::2]
Out[32]:
2020-01-02   -0.244286
2019-10-31    1.014650
dtype: float64

In [33]: ts + ts[::2]
Out[33]:
2019-10-01         NaN
2019-10-31    2.029300
2020-01-02   -0.488572
dtype: float64

In [34]: ts.index.dtype
Out[34]: dtype('<M8[ns]')

In [35]: stamp = ts.index[0]

In [36]: stamp
Out[36]: Timestamp('2020-01-02 00:00:00')


In [37]: longer_ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2017', pe
    ...: riods=1000))

In [38]: longer_ts
Out[38]:
2017-01-01   -1.242282
2017-01-02    0.300535
2017-01-03    1.424302
2017-01-04    0.681730
2017-01-05   -0.417808
2017-01-06    0.036112
2017-01-07   -0.647897
2017-01-08   -0.052959
2017-01-09    1.271671
2017-01-10   -0.383218
2017-01-11   -0.834115
2017-01-12   -0.393173
2017-01-13   -0.296934
2017-01-14    0.043358
2017-01-15    1.179599
2017-01-16   -0.535491
2017-01-17   -0.836548
2017-01-18   -0.579721
2017-01-19   -0.209654
2017-01-20    0.865106
2017-01-21    1.439839
2017-01-22   -0.808369
2017-01-23    0.050577
2017-01-24    0.232047
2017-01-25   -0.519173
2017-01-26   -0.642073
2017-01-27   -0.955328
2017-01-28   -1.229947
2017-01-29   -0.843331
2017-01-30    0.342699
                ...
2019-08-29   -0.630819
2019-08-30    0.265780
2019-08-31    1.567900
2019-09-01    1.676618
2019-09-02    0.155925
2019-09-03   -0.127706
2019-09-04   -0.347396
2019-09-05   -0.678868
2019-09-06    0.265215
2019-09-07   -0.909802
2019-09-08    2.396689
2019-09-09    1.374621
2019-09-10   -0.436224
2019-09-11    0.106485
2019-09-12   -2.029517
2019-09-13   -1.158340
2019-09-14    1.287551
2019-09-15   -0.509397
2019-09-16    1.434617
2019-09-17    0.960032
2019-09-18    1.098704
2019-09-19   -0.913708
2019-09-20   -0.399936
2019-09-21   -0.146347
2019-09-22    0.722342
2019-09-23    0.800753
2019-09-24    0.532661
2019-09-25   -0.350666
2019-09-26    1.625896
2019-09-27    2.039789
Freq: D, Length: 1000, dtype: float64

In [39]: longer_ts['2019']
Out[39]:
2019-01-01   -0.893211
2019-01-02    0.262464
2019-01-03   -0.828847
2019-01-04    2.460223
2019-01-05   -1.957483
2019-01-06    1.878989
2019-01-07   -0.382388
2019-01-08   -0.272807
2019-01-09   -1.697709
2019-01-10    0.144269
2019-01-11    0.310313
2019-01-12    1.690411
2019-01-13    0.664513
2019-01-14   -0.120852
2019-01-15    1.721181
2019-01-16   -0.604663
2019-01-17    1.519465
2019-01-18    1.275806
2019-01-19   -0.452652
2019-01-20    1.139873
2019-01-21   -1.114590
2019-01-22   -1.366032
2019-01-23   -1.108857
2019-01-24    0.454172
2019-01-25   -0.755487
2019-01-26    0.126800
2019-01-27    2.268392
2019-01-28   -1.549996
2019-01-29    0.580866
2019-01-30    0.289625
                ...
2019-08-29   -0.630819
2019-08-30    0.265780
2019-08-31    1.567900
2019-09-01    1.676618
2019-09-02    0.155925
2019-09-03   -0.127706
2019-09-04   -0.347396
2019-09-05   -0.678868
2019-09-06    0.265215
2019-09-07   -0.909802
2019-09-08    2.396689
2019-09-09    1.374621
2019-09-10   -0.436224
2019-09-11    0.106485
2019-09-12   -2.029517
2019-09-13   -1.158340
2019-09-14    1.287551
2019-09-15   -0.509397
2019-09-16    1.434617
2019-09-17    0.960032
2019-09-18    1.098704
2019-09-19   -0.913708
2019-09-20   -0.399936
2019-09-21   -0.146347
2019-09-22    0.722342
2019-09-23    0.800753
2019-09-24    0.532661
2019-09-25   -0.350666
2019-09-26    1.625896
2019-09-27    2.039789
Freq: D, Length: 270, dtype: float64

In [40]: longer_ts['2019-03']
Out[40]:
2019-03-01    0.182947
2019-03-02   -0.660876
2019-03-03   -0.931491
2019-03-04    0.001211
2019-03-05    0.983108
2019-03-06   -1.029313
2019-03-07   -0.865580
2019-03-08    0.856426
2019-03-09   -0.639257
2019-03-10   -1.148323
2019-03-11   -0.751591
2019-03-12    1.507884
2019-03-13    1.847042
2019-03-14   -1.152899
2019-03-15   -0.179020
2019-03-16    0.325739
2019-03-17   -0.180508
2019-03-18   -1.578714
2019-03-19   -1.685361
2019-03-20    1.973641
2019-03-21    1.314639
2019-03-22    0.754685
2019-03-23   -1.085906
2019-03-24   -0.312689
2019-03-25   -0.699715
2019-03-26   -0.619791
2019-03-27   -0.840330
2019-03-28   -0.949660
2019-03-29   -0.186210
2019-03-30    0.738416
2019-03-31   -0.674320
Freq: D, dtype: float64


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值