栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python pandas 时间序列数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python pandas 时间序列数据

python pandas 时间序列数据

文章目录
  • 1. to_datetime() “字符串序列”转时间序列
  • 2. 使用datetime对象序列 得到时间序列数据
  • 3. pd.date_range() 创建时间序列数据
    • 3.1 创建方法① 指定periods
    • 3.2 创建方法② 指定首位
    • 3.3 创建方法③ 指定频率 freq
  • 4.时间的 索引
    • 4.1 索引 取个别数据
    • 4.2 索引年份
    • 4.3 索引年月
  • 6. 切片
    • 6.1 支持`[start:end:step]`切片
    • 6.2 切片(包含末端数据)
    • 6.3 通过切片修改数据
    • 6.4 truncate() 截断函数
  • 7. 时间序列中的空日期
    • 7.1 空值日期的形式
    • 7.2 判断空值
  • 7.3 去除空值日期数据
  • 8. 时间排序
    • 8.1 正序
    • 8.2 倒序
  • 9.日期 的 重复值
    • 9.1 判断是否有重复值 is_unique属性
    • 9.2 聚合
  • 10. 前滞 与 后滞 shift()
    • 10.1 后滞
    • 10.2 前滞


    ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ
                 

꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ


import pandas as pd

1. to_datetime() “字符串序列”转时间序列

使用to_datetime()方法可以将 字符串序列的数据转化为 时间序列的索引,即 将数据转化为时间序列数据。

dates1 = pd.to_datetime(['1/6/2022', '3/6/2022', '2/6/2022'])
print(dates1)


__

2. 使用datetime对象序列 得到时间序列数据

以datetime对象组成的序列作为Series或DataFrame的索引,则直接就是时间序列数据了,不再需要其他额外方法。

dates3 = [datetime(2022, 6, 1), datetime(2022, 6, 3), datetime(2022, 6, 4), datetime(2022, 6, 2), datetime(2022, 6, 5)]
s1 = pd.Series([2, 3, 5, 7, 9], index=dates3)
print(s1)
print("=============================================================")
print(s1.index)

    


3. pd.date_range() 创建时间序列数据 3.1 创建方法① 指定periods
date_range1 = pd.date_range('1/1/2022', periods=1000)
s2 = pd.Series(np.random.randn(1000), index=date_range1)
print(s2)

            


3.2 创建方法② 指定首位
date_range2 = pd.date_range('2022-2-1', '2022-3-1')
s2 = pd.Series(np.random.randn(len(date_range2)), index=date_range2)
print(s2)

                


3.3 创建方法③ 指定频率 freq

常用的freq有:

参数描述
Y年
M月
W周
D天
B工作日
H小时
T分钟
s秒

示例如下:

date_range3 = pd.date_range('2022-06-01','2023-06-30',freq='3s')
s2 = pd.Series(np.random.randn(len(date_range3)), index=date_range3)
print(s2)

          


4.时间的 索引 4.1 索引 取个别数据
dates = [datetime(2022, 6, 1), datetime(2022, 6, 3), datetime(2022, 6, 4), datetime(2022, 6, 2), datetime(2022, 6, 5)]
s1 = pd.Series([2, 3, 5, 7, 9], index=dates)
print(s1['2022 06 02'])
print(s1['2022-06-02'])
print(s1['2022/06/02'])
print(s1['2022.06.02'])
print(s1['2022, 06, 02'])
print("===========================")
# 此种写法取出来的不是一条数据,而是一个值。
print(s1[datetime(2022, 6, 2)])

          

4.2 索引年份

年份索引示例

s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
print(s2['2022'])

            


4.3 索引年月
s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
print(s2['2022-03'])

            


6. 切片 6.1 支持[start:end:step]切片
print(s1[::2])

          


6.2 切片(包含末端数据)
s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
print(s2['2022-03-19':'2022-04-02'])

          


6.3 通过切片修改数据

可以借助切片达到修改部分数据的目的,示例如下结果略。

s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
s2['2022-03-19':'2022-04-02']  = 1

6.4 truncate() 截断函数

截去某日期后的数据

s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
print(s2.truncate(after='10/6/2023'))

          


截去某日期前的数据

s2 = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2022', periods=1000))
print(s2.truncate(before='10/6/2023'))

          


7. 时间序列中的空日期 7.1 空值日期的形式
dates2 = pd.to_datetime(['1/6/2022', '3/6/2022', '2/6/2022', None])
print(dates2)

如果原数据中存在空值 None,则在这里被转化为 NaT 的形式。


7.2 判断空值

判断是否为空值,isnull()方法 在时间序列索引中是可用的。

dates2 = pd.to_datetime(['1/6/2022', '3/6/2022', '2/6/2022', None])
print(pd.isnull(dates2))

              


7.3 去除空值日期数据
dates2 = pd.to_datetime(['1/6/2022', '3/6/2022', '2/6/2022', None])
print(dates2.dropna())

  


8. 时间排序

给时间排序

8.1 正序
dates3 = [datetime(2022, 6, 1), datetime(2022, 6, 3), datetime(2022, 6, 4), datetime(2022, 6, 2), datetime(2022, 6, 5)]
s1 = pd.Series([2, 3, 5, 7, 9], index=dates3)
print(s1.sort_index())

          


8.2 倒序
print(s1.sort_index(ascending=False))

             


9.日期 的 重复值 9.1 判断是否有重复值 is_unique属性
dates = pd.DatetimeIndex(['6/1/2022', '6/2/2022', '6/2/2022', '6/3/2022', '6/4/2022'])
s3 = pd.Series(['aaa', 'ccc', 'bbb', 'ddd', 'eee'], index=dates)
print(s3.index.is_unique)

打印出s3的is_unique属性,值为Fasle,表明存在重复值。

             


9.2 聚合

存在大量重复索引时,也许适合做聚合。
 
以聚合计数为例。

print(s3.groupby(level=0).count())

             


10. 前滞 与 后滞 shift() 10.1 后滞
s4 = pd.Series(np.random.randn(4),index=pd.date_range('1/1/2022',periods=4,freq='M'))
print(s4.shift(2))

             


10.2 前滞
s4 = pd.Series(np.random.randn(4),index=pd.date_range('1/1/2022',periods=4,freq='M'))
print(s4.shift(-2))

             


꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号