日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python pandas 日期_python+pandas+时间、日期以及时间序列处理方法

發(fā)布時間:2024/7/23 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pandas 日期_python+pandas+时间、日期以及时间序列处理方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python+pandas+時間、日期以及時間序列處理方法

先簡單的了解下日期和時間數(shù)據(jù)類型及工具 python標(biāo)準(zhǔn)庫包含于日期(date)和時間(time)數(shù)據(jù)的數(shù)據(jù)類型,datetime、time以及calendar模塊會被經(jīng)常用到。 datetime以毫秒形式存儲日期和時間,datetime.timedelta表示兩個datetime對象之間的時間差。 給datetime對象加上或減去一個或多個timedelta,會產(chǎn)生一個新的對象

from datetime import datetime

from datetime import timedelta

now = datetime.now()

now

datetime.datetime(2017, 6, 27, 15, 56, 56, 167000)

datetime參數(shù):datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

delta = now - datetime(2017,6,27,10,10,10,10)

delta

datetime.timedelta(0, 20806, 166990)

delta.days

0

delta.seconds

20806

delta.microseconds

166990

只有這三個參數(shù)了! datetime模塊中的數(shù)據(jù)類型

類型 說明

date 以公歷形式存儲日歷日期(年、月、日)

time 將時間存儲為時、分、秒、毫秒

datetime 存儲日期和時間

timedelta 表示兩個datetime值之間的差(日、秒、毫秒)

字符串和datetime的相互轉(zhuǎn)換

1)python標(biāo)準(zhǔn)庫函數(shù) 日期轉(zhuǎn)換成字符串:利用str 或strftime 字符串轉(zhuǎn)換成日期:datetime.strptime

stamp = datetime(2017,6,27)

str(stamp)

'2017-06-27 00:00:00'

stamp.strftime('%y-%m-%d')#%Y是4位年,%y是2位年

'17-06-27'

#對多個時間進行解析成字符串

date = ['2017-6-26','2017-6-27']

datetime2 = [datetime.strptime(x,'%Y-%m-%d') for x in date]

datetime2

[datetime.datetime(2017, 6, 26, 0, 0), datetime.datetime(2017, 6, 27, 0, 0)]

2)第三方庫dateutil.parser的時間解析函數(shù)

pandas通常用于處理成組日期,不管這些日期是DataFrame的軸索引還是列,to_datetime方法可以解析多種不同的日期表示形式。

date

['2017-6-26', '2017-6-27']

import pandas as pd

pd.to_datetime(date)

DatetimeIndex(['2017-06-26', '2017-06-27'], dtype='datetime64[ns]', freq=None)

datetime 格式定義

代碼 說明

%Y 4位數(shù)的年

%y 2位數(shù)的年

%m 2位數(shù)的月[01,12]

%d 2位數(shù)的日[01,31]

%H 時(24小時制)[00,23]

%l 時(12小時制)[01,12]

%M 2位數(shù)的分[00,59]

%S 秒[00,61]有閏秒的存在

%w 用整數(shù)表示的星期幾[0(星期天),6]

%F %Y-%m-%d簡寫形式例如,2017-06-27

%D %m/%d/%y簡寫形式

pandas時間序列基礎(chǔ)以及時間、日期處理

pandas最基本的時間序列類型就是以時間戳(時間點)(通常以python字符串或datetime對象表示)為索引的Series:

dates = ['2017-06-20','2017-06-21',\

'2017-06-22','2017-06-23','2017-06-24','2017-06-25','2017-06-26','2017-06-27']

import numpy as np

ts = pd.Series(np.random.randn(8),index = pd.to_datetime(dates))

ts

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts.index

DatetimeIndex(['2017-06-20', '2017-06-21', '2017-06-22', '2017-06-23',

'2017-06-24', '2017-06-25', '2017-06-26', '2017-06-27'],

dtype='datetime64[ns]', freq=None)

pandas不同索引的時間序列之間的算術(shù)運算會自動按日期對齊

ts[::2]#從前往后每隔兩個取數(shù)據(jù)

2017-06-20 0.788811

2017-06-22 0.009967

2017-06-24 0.981214

2017-06-26 -0.127258

dtype: float64

ts[::-2]#從后往前逆序每隔兩個取數(shù)據(jù)

2017-06-27 1.919773

2017-06-25 0.314127

2017-06-23 -1.024626

2017-06-21 0.372555

dtype: float64

ts + ts[::2]#自動數(shù)據(jù)對齊

2017-06-20 1.577621

2017-06-21 NaN

2017-06-22 0.019935

2017-06-23 NaN

2017-06-24 1.962429

2017-06-25 NaN

2017-06-26 -0.254516

2017-06-27 NaN

dtype: float64

索引為日期的Series和DataFrame數(shù)據(jù)的索引、選取以及子集構(gòu)造

方法:

1).index[number_int]

2)[一個可以被解析為日期的字符串]

3)對于,較長的時間序列,只需傳入‘年'或‘年月'可返回對應(yīng)的數(shù)據(jù)切片

4)通過時間范圍進行切片索引

ts

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts[ts.index[2]]

0.0099673896063391908

ts['2017-06-21']#傳入可以被解析成日期的字符串

0.37255538918121028

ts['21/06/2017']

0.37255538918121028

ts['20170621']

0.37255538918121028

ts['2017-06']#傳入年或年月

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts['2017-06-20':'2017-06-23']#時間范圍進行切片

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

dtype: float64

帶有重復(fù)索引的時間序列

1).index.is_unique檢查索引日期是否是唯一的

2)對非唯一時間戳的數(shù)據(jù)進行聚合,通過groupby,并傳入level = 0(索引的唯一一層)

dates = pd.DatetimeIndex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03'])

dates

DatetimeIndex(['2017-06-01', '2017-06-02', '2017-06-02', '2017-06-02',

'2017-06-03'],

dtype='datetime64[ns]', freq=None)

dup_ts = pd.Series(np.arange(5),index = dates)

dup_ts

2017-06-01 0

2017-06-02 1

2017-06-02 2

2017-06-02 3

2017-06-03 4

dtype: int32

dup_ts.index.is_unique

False

dup_ts['2017-06-02']

2017-06-02 1

2017-06-02 2

2017-06-02 3

dtype: int32

grouped = dup_ts.groupby(level=0).mean()

grouped

2017-06-01 0

2017-06-02 2

2017-06-03 4

dtype: int32

dup_df = pd.DataFrame(np.arange(10).reshape((5,2)),index = dates )

dup_df

0 1

2017-06-01 0 1

2017-06-02 2 3

2017-06-02 4 5

2017-06-02 6 7

2017-06-03 8 9

grouped_df = dup_df.groupby(level=0).mean()##針對DataFrame

grouped_df

總結(jié)

1)字符串、日期的轉(zhuǎn)換方法

2)日期和時間的主要python,datetime、timedelta、pandas.to_datetime等

3)以時間為索引的Series和DataFrame的索引、切片

4)帶有重復(fù)時間索引時的索引,.groupby(level=0)應(yīng)用

歡迎關(guān)注我的號

志學(xué)Python

總結(jié)

以上是生活随笔為你收集整理的python pandas 日期_python+pandas+时间、日期以及时间序列处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。