程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python pandas 時間序列數據

編輯:Python

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))


꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ꧔ꦿ
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved