日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 数据分析三剑客之 Pandas(九):时间序列

發布時間:2023/12/10 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 数据分析三剑客之 Pandas(九):时间序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSDN 課程推薦:《邁向數據科學家:帶你玩轉Python數據分析》,講師齊偉,蘇州研途教育科技有限公司CTO,蘇州大學應用統計專業碩士生指導委員會委員;已出版《跟老齊學Python:輕松入門》《跟老齊學Python:Django實戰》、《跟老齊學Python:數據分析》和《Python大學實用教程》暢銷圖書。


Pandas 系列文章:

  • Python 數據分析三劍客之 Pandas(一):認識 Pandas 及其 Series、DataFrame 對象
  • Python 數據分析三劍客之 Pandas(二):Index 索引對象以及各種索引操作
  • Python 數據分析三劍客之 Pandas(三):算術運算與缺失值的處理
  • Python 數據分析三劍客之 Pandas(四):函數應用、映射、排序和層級索引
  • Python 數據分析三劍客之 Pandas(五):統計計算與統計描述
  • Python 數據分析三劍客之 Pandas(六):GroupBy 數據分裂、應用與合并
  • Python 數據分析三劍客之 Pandas(七):合并數據集
  • Python 數據分析三劍客之 Pandas(八):數據重塑、重復數據處理與數據替換
  • Python 數據分析三劍客之 Pandas(九):時間序列
  • Python 數據分析三劍客之 Pandas(十):數據讀寫

另有 NumPy、Matplotlib 系列文章已更新完畢,歡迎關注:

  • NumPy 系列文章:https://itrhx.blog.csdn.net/category_9780393.html
  • Matplotlib 系列文章:https://itrhx.blog.csdn.net/category_9780418.html

推薦學習資料與網站(博主參與部分文檔翻譯):

  • NumPy 官方中文網:https://www.numpy.org.cn/
  • Pandas 官方中文網:https://www.pypandas.cn/
  • Matplotlib 官方中文網:https://www.matplotlib.org.cn/
  • NumPy、Matplotlib、Pandas 速查表:https://github.com/TRHX/Python-quick-reference-table

文章目錄

    • 【01x00】時間序列
    • 【02x00】Timestamp 時間戳
      • 【02x01】pandas.Timestamp
      • 【02x02】freq 頻率部分取值
      • 【02x03】to_datetime
      • 【02x04】date_range
      • 【02x05】索引與切片
      • 【02x06】移動數據與數據偏移
      • 【02x07】時區處理
    • 【03x00】period 固定時期
      • 【03x01】pandas.Period
      • 【03x02】period_range
      • 【03x03】asfreq 時期頻率轉換
      • 【03x04】to_period 與 to_timestamp()
    • 【04x00】timedelta 時間間隔
      • 【04x01】pandas.Timedelta
      • 【04x02】to_timedelta
      • 【04x03】timedelta_range
    • 【05x00】重采樣及頻率轉換


這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/106947061 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

【01x00】時間序列

官網對于時間序列的介紹:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html

時間序列(time series)是一種重要的結構化數據形式,應用于多個領域,包括金融學、經濟學、生態學、神經科學、物理學等。在多個時間點觀察或測量到的任何事物都可以形成一段時間序列。很多時間序列是固定頻率的,也就是說,數據點是根據某種規律定期出現的(比如每15秒、每5分鐘、每月出現一次)。時間序列也可以是不定期的,沒有固定的時間單位或單位之間的偏移量。時間序列數據的意義取決于具體的應用場景,主要有以下幾種:

  • 時間戳(timestamp),表示某個具體的時間點,例如 2020-6-24 15:30;

  • 固定周期(period),表示某個時間周期,例如 2020-01;

  • 時間間隔(timedelta),持續時間,即兩個日期或時間之間的差異。

  • 針對時間戳數據,Pandas 提供了 Timestamp 類型。它本質上是 Python 的原生 datetime 類型的替代品,但是在性能更好的 numpy.datetime64 類型的基礎上創建。對應的索引數據結構是 DatetimeIndex。

  • 針對時間周期數據,Pandas 提供了 Period 類型。這是利用 numpy.datetime64 類型將固定頻率的時間間隔進行編碼。對應的索引數據結構是 PeriodIndex。

  • 針對時間增量或持續時間,Pandas 提供了 Timedelta 類型。Timedelta 是一種代替 Python 原生datetime.timedelta 類型的高性能數據結構,同樣是基于 numpy.timedelta64 類型。對應的索引數據結構是 TimedeltaIndex。

【02x00】Timestamp 時間戳

【02x01】pandas.Timestamp

在 pandas 中,pandas.Timestamp 方法用來代替 Python 中的 datetime.datetime 方法。

Timestamp 與 Python 的 Datetime 等效,在大多數情況下都可以互換。 此類型用于組成 DatetimeIndex 以及 Pandas 中其他面向時間序列的數據結構。

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.Timestamp.html

基本語法:

class pandas.Timestamp(ts_input=<object object>, freq=None, tz=None, unit=None, year=None, month=None, day=None, hour=None, minute=None, second=None, microsecond=None, nanosecond=None, tzinfo=None)

常用參數:

參數描述
ts_input要轉換為時間戳的對象,可以是 datetime-like,str,int,float 類型
freq時間戳將具有的偏移量,可以是 str,日期偏移量類型,取值參見【02x02】freq 頻率部分取值
tz時間戳將具有的時區
unit如果 ts_input 是整數或浮點數,該參數用于設置其單位(D、s、ms、us、ns)

簡單示例:

>>> import pandas as pd >>> pd.Timestamp('2017-01-01T12') Timestamp('2017-01-01 12:00:00')

設置 unit='s',即待轉換對象單位為秒:

>>> import pandas as pd >>> pd.Timestamp(1513393355.5, unit='s') Timestamp('2017-12-16 03:02:35.500000')

使用 tz 參數設置時區:

>>> import pandas as pd >>> pd.Timestamp(1513393355, unit='s', tz='US/Pacific') Timestamp('2017-12-15 19:02:35-0800', tz='US/Pacific')

單獨設置年月日:

>>> import pandas as pd >>> pd.Timestamp(year=2020, month=6, day=24, hour=12) Timestamp('2020-06-24 12:00:00')

【02x02】freq 頻率部分取值

完整取值參見官方文檔:https://pandas.pydata.org/docs/user_guide/timeseries.html#timeseries-offset-aliases

參數類型描述
DDay每日歷日
BBusinessDay每工作日
HHour每小時
T 或 minMinute每分
SSecond每秒
L 或 msMilli每毫秒(即每千分之一秒)
UMicro每微秒(即每百萬分之一秒)
MMonthEnd每月最后一個日歷日
BMBusinessMonthEnd每月最后一個工作日
MSMonthBegin每月第一個日歷日
BMSBusinessMonthBegin每月第一個工作日
W-MON、W-TUE…Week從指定的星期幾(MON、TUE、 WED、THU、FR、SAT、SUN)開始算起,每周
WoM-1MON、WOM-2MON…WeekOfMonth產生每月第一、第二、第三或第四周的星期幾。例如,WoM-3FRI 表示每月第3個星期五
Q-JAN、Q-FEB…QuarterEnd對于以指定月份(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV、DEC)結束的年度,每季度最后一月的最后個日歷日
BQ-JAN、BQ-FEB…BusinessQuarterEnd對于以指定月份結束的年度,每季度最后一月的最后一個工作日
QS-JAN、QS-FEB…QuarterBegin對于以指定月份結束的年度,每季度最后一月的第一個日歷日
BQS-JAN、 BQS-FEB…BusinessQuarterBegin對于以指定月份結束的年度,每季度最后一月的第一個工作日
A-JAN、A-FEB…YearEnd每年指定月份(JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、 OCT、NOV、DEC)的最后一個日歷日
BA-JAN、BA-FEB…BusinessYearEnd每年指定月份的最后一個工作日
AS-JAN、AS-FEB…YearBegin每年指定月份的第一個歷日日
BAS-JAN、BAS-FEB…BusinessYearBegin每年指定月份的第一個工作日

【02x03】to_datetime

在 Python 中,datetime 庫提供了日期和時間處理方法,利用 str 或 strftime 方法可以將 datetime 對象轉化成字符串,具體用法可參見【Python 標準庫學習】日期和時間處理庫 — datetime。

>>> from datetime import datetime >>> stamp = datetime(2020, 6, 24) >>> stamp datetime.datetime(2020, 6, 24, 0, 0) >>> >>> str(stamp) '2020-06-24 00:00:00' >>> >>> stamp.strftime('%Y-%m-%d') '2020-06-24'

在 pandas 中 to_datetime 方法可以將字符串解析成多種不同的 Timestamp(時間戳) 對象:

>>> import pandas as pd >>> datestrs = '2011-07-06 12:00:00' >>> type(datestrs) <class 'str'> >>> >>> pd.to_datetime(datestrs) Timestamp('2011-07-06 12:00:00')

基本語法:

pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html

常用參數:

參數描述
arg要轉換為日期時間的對象,可以接受 int, float, str, datetime, list, tuple, 1-d array, Series DataFrame/dict-like 類型
errors如果字符串不滿足時間戳的形式,是否會發生異常
ignore:不引發異常,返回原始輸入;raise:無效解析將引發異常(默認);coerce:無效解析將被設置為NaT
dayfirstbool 類型,默認 False,如果 arg 是 str 或列表,是否首先解析為日期
例如 dayfirst 為 True,10/11/12 被解析為 2012-11-10,為 False 則解析為 2012-10-11
yearfirstbool 類型,默認 False,如果 arg 是 str 或列表,是否首先解析為年份
例如 dayfirst 為 True,10/11/12 被解析為 2010-11-12,為 False 則解析為 2012-10-11
如果 dayfirst 和 yearfirst 都為 True,則優先 yearfirst
utcbool 類型,是否轉換為協調世界時,默認 None
format格式化時間,如 21/2/20 16:10 使用 %d/%m/%y %H:%M 會被解析為 2020-02-21 16:10:00
符號含義常見文章:【Python 標準庫學習】日期和時間處理庫 — datetime 或者官方文檔
exact如果為 True,則需要精確的格式匹配。如果為 False,則允許格式與目標字符串中的任何位置匹配
unit如果 arg 是整數或浮點數,該參數用于設置其單位(D、s、ms、us、ns)

簡單應用:

>>> import pandas as pd >>> obj = pd.DataFrame({'year': [2015, 2016], 'month': [2, 3], 'day': [4, 5]}) >>> objyear month day 0 2015 2 4 1 2016 3 5 >>> >>> pd.to_datetime(obj) 0 2015-02-04 1 2016-03-05 dtype: datetime64[ns]

設置 format 和 errors 參數:

>>> import pandas as pd >>> pd.to_datetime('13000101', format='%Y%m%d', errors='ignore') datetime.datetime(1300, 1, 1, 0, 0) >>> >>> pd.to_datetime('13000101', format='%Y%m%d', errors='coerce') NaT >>> >>> pd.to_datetime('13000101', format='%Y%m%d', errors='raise') Traceback (most recent call last): ... pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1300-01-01 00:00:00

設置 unit 參數:

>>> import pandas as pd >>> pd.to_datetime(1490195805, unit='s') Timestamp('2017-03-22 15:16:45') >>> >>> pd.to_datetime(1490195805433502912, unit='ns') Timestamp('2017-03-22 15:16:45.433502912')

【02x04】date_range

pandas.date_range 方法可用于根據指定的頻率生成指定長度的 DatetimeIndex。

基本語法:

pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=None, **kwargs) → pandas.core.indexes.datetimes.DatetimeIndex

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.date_range.html

參數描述
start開始日期
end結束日期
periodsint 類型,要生成的時段數(天)
freq頻率字符串,即按照某種特定的頻率來生成日期,取值參見【02x02】freq 頻率部分取值
tz設置時區,例如 “Asia/Hong_Kong”
normalizebool 類型,默認 False,是否在生成日期之前對其進行規范化(僅保留年月日)
name結果 DatetimeIndex 的名稱
closedNone:默認值,同時保留開始日期和結束日期
'left':保留開始日期,不保留結束日期
'right':保留結束日期,不保留開始日期

簡單示例:

>>> import pandas as pd >>> pd.date_range(start='1/1/2018', end='1/08/2018') DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04','2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08'],dtype='datetime64[ns]', freq='D')

指定 periods 參數:

>>> import pandas as pd >>> pd.date_range(start='2012-04-01', periods=20) DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04','2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08','2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12','2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16','2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20'],dtype='datetime64[ns]', freq='D') >>> >>> pd.date_range(end='2012-06-01', periods=20) DatetimeIndex(['2012-05-13', '2012-05-14', '2012-05-15', '2012-05-16','2012-05-17', '2012-05-18', '2012-05-19', '2012-05-20','2012-05-21', '2012-05-22', '2012-05-23', '2012-05-24','2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28','2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01'],dtype='datetime64[ns]', freq='D') >>> >>> pd.date_range(start='2018-04-24', end='2018-04-27', periods=3) DatetimeIndex(['2018-04-24 00:00:00', '2018-04-25 12:00:00', '2018-04-27 00:00:00'],dtype='datetime64[ns]', freq=None) >>> >>> pd.date_range(start='2018-04-24', end='2018-04-28', periods=3) DatetimeIndex(['2018-04-24', '2018-04-26', '2018-04-28'], dtype='datetime64[ns]', freq=None)

指定 freq='M' 會按照每月最后一個日歷日的頻率生成日期,指定 freq='3M' 會每隔3個月按照每月最后一個日歷日的頻率生成日期:

>>> import pandas as pd >>> pd.date_range(start='1/1/2018', periods=5, freq='M') DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31', '2018-04-30','2018-05-31'],dtype='datetime64[ns]', freq='M') >>> >>> pd.date_range(start='1/1/2018', periods=5, freq='3M') DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31','2019-01-31'],dtype='datetime64[ns]', freq='3M') >>>

使用 tz 參數設置時區:

>>> import pandas as pd >>> pd.date_range(start='1/1/2018', periods=5, tz='Asia/Tokyo') DatetimeIndex(['2018-01-01 00:00:00+09:00', '2018-01-02 00:00:00+09:00','2018-01-03 00:00:00+09:00', '2018-01-04 00:00:00+09:00','2018-01-05 00:00:00+09:00'],dtype='datetime64[ns, Asia/Tokyo]', freq='D') >>> >>> pd.date_range(start='6/24/2020', periods=5, tz='Asia/Hong_Kong') DatetimeIndex(['2020-06-24 00:00:00+08:00', '2020-06-25 00:00:00+08:00','2020-06-26 00:00:00+08:00', '2020-06-27 00:00:00+08:00','2020-06-28 00:00:00+08:00'],dtype='datetime64[ns, Asia/Hong_Kong]', freq='D')

設置 normalize 參數,在生成時間戳之前對其進行格式化操作:

>>> import pandas as pd >>> pd.date_range('2020-06-24 12:56:31', periods=5, normalize=True) DatetimeIndex(['2020-06-24', '2020-06-25', '2020-06-26', '2020-06-27','2020-06-28'],dtype='datetime64[ns]', freq='D')

設置 closed 參數:

>>> import pandas as pd >>> pd.date_range(start='2020-06-20', end='2020-06-24', closed=None) DatetimeIndex(['2020-06-20', '2020-06-21', '2020-06-22', '2020-06-23','2020-06-24'],dtype='datetime64[ns]', freq='D') >>> >>> pd.date_range(start='2020-06-20', end='2020-06-24', closed='left') DatetimeIndex(['2020-06-20', '2020-06-21', '2020-06-22', '2020-06-23'], dtype='datetime64[ns]', freq='D') >>> >>> pd.date_range(start='2020-06-20', end='2020-06-24', closed='right') DatetimeIndex(['2020-06-21', '2020-06-22', '2020-06-23', '2020-06-24'], dtype='datetime64[ns]', freq='D')

【02x05】索引與切片

Pandas 最基本的時間序列類型就是以時間戳(通常以 Python 字符串或 datatime 對象表示)為索引的Series,這些 datetime 對象實際上是被放在 DatetimeIndex 中的,可以使用類似 pandas.Series 對象的切片方法對其進行索引:

>>> import pandas as pd >>> import numpy as np >>> dates = [datetime(2011, 1, 2), datetime(2011, 1, 5),datetime(2011, 1, 7), datetime(2011, 1, 8),datetime(2011, 1, 10), datetime(2011, 1, 12)] >>> obj = pd.Series(np.random.randn(6), index=dates) >>> >>> obj 2011-01-02 -0.407110 2011-01-05 -0.186661 2011-01-07 -0.731080 2011-01-08 0.860970 2011-01-10 1.929973 2011-01-12 -0.168599 dtype: float64 >>> >>> obj.index DatetimeIndex(['2011-01-02', '2011-01-05', '2011-01-07', '2011-01-08','2011-01-10', '2011-01-12'],dtype='datetime64[ns]', freq=None) >>> >>> obj.index[0] Timestamp('2011-01-02 00:00:00') >>> >>> obj.index[0:3] DatetimeIndex(['2011-01-02', '2011-01-05', '2011-01-07'], dtype='datetime64[ns]', freq=None)

另外還可以傳入一個可以被解釋為日期的字符串,或者只需傳入“年”或“年月”即可輕松選取數據的切片:

>>> import pandas as pd >>> import numpy as np >>> obj = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) >>> obj 2000-01-01 -1.142284 2000-01-02 1.198785 2000-01-03 2.466909 2000-01-04 -0.086728 2000-01-05 -0.978437... 2002-09-22 -0.252240 2002-09-23 0.148561 2002-09-24 -1.330409 2002-09-25 -0.673471 2002-09-26 -0.253271 Freq: D, Length: 1000, dtype: float64 >>> >>> obj['26/9/2002'] -0.25327100684233356 >>> >>> obj['2002'] 2002-01-01 1.058715 2002-01-02 0.900859 2002-01-03 1.993508 2002-01-04 -0.103211 2002-01-05 -0.950090... 2002-09-22 -0.252240 2002-09-23 0.148561 2002-09-24 -1.330409 2002-09-25 -0.673471 2002-09-26 -0.253271 Freq: D, Length: 269, dtype: float64 >>> >>> obj['2002-09'] 2002-09-01 -0.995528 2002-09-02 0.501528 2002-09-03 -0.486753 2002-09-04 -1.083906 2002-09-05 1.458975 2002-09-06 -1.331685 2002-09-07 0.195338 2002-09-08 -0.429613 2002-09-09 1.125823 2002-09-10 1.607051 2002-09-11 0.530387 2002-09-12 -0.015938 2002-09-13 1.781043 2002-09-14 -0.277123 2002-09-15 0.344569 2002-09-16 -1.010810 2002-09-17 0.463001 2002-09-18 1.883636 2002-09-19 0.274520 2002-09-20 0.624184 2002-09-21 -1.203057 2002-09-22 -0.252240 2002-09-23 0.148561 2002-09-24 -1.330409 2002-09-25 -0.673471 2002-09-26 -0.253271 Freq: D, dtype: float64 >>> >>> obj['20/9/2002':'26/9/2002'] 2002-09-20 0.624184 2002-09-21 -1.203057 2002-09-22 -0.252240 2002-09-23 0.148561 2002-09-24 -1.330409 2002-09-25 -0.673471 2002-09-26 -0.253271 Freq: D, dtype: float64

【02x06】移動數據與數據偏移

移動(shifting)指的是沿著時間軸將數據前移或后移。Series 和 DataFrame 都有一個 shift 方法用于執行單純的前移或后移操作,保持索引不變:

>>> import pandas as pd >>> import numpy as np >>> obj = pd.Series(np.random.randn(4),index=pd.date_range('1/1/2000', periods=4, freq='M')) >>> obj 2000-01-31 -0.100217 2000-02-29 1.177834 2000-03-31 -0.644353 2000-04-30 -1.954679 Freq: M, dtype: float64 >>> >>> obj.shift(2) 2000-01-31 NaN 2000-02-29 NaN 2000-03-31 -0.100217 2000-04-30 1.177834 Freq: M, dtype: float64 >>> >>> obj.shift(-2) 2000-01-31 -0.644353 2000-02-29 -1.954679 2000-03-31 NaN 2000-04-30 NaN Freq: M, dtype: float64

因為簡單的移位操作不會修改索引,所以部分數據會被丟棄并引入 NaN(缺失值)。因此,如果頻率已知,則可以將其傳給 shift 以便實現對時間戳進行位移而不是對數據進行簡單位移:

>>> import pandas as pd >>> import numpy as np >>> obj = pd.Series(np.random.randn(4),index=pd.date_range('1/1/2000', periods=4, freq='M')) >>> obj 2000-01-31 -0.100217 2000-02-29 1.177834 2000-03-31 -0.644353 2000-04-30 -1.954679 Freq: M, dtype: float64 >>> >>> obj.shift(2, freq='M') 2000-03-31 -0.100217 2000-04-30 1.177834 2000-05-31 -0.644353 2000-06-30 -1.954679 Freq: M, dtype: float64

Pandas 中的頻率是由一個基礎頻率(base frequency)和一個乘數組成的。基礎頻率通常以一個字符串別名表示,比如 "M" 表示每月,"H" 表示每小時。對于每個基礎頻率,都有一個被稱為日期偏移量(date offset)的對象與之對應。例如,按小時計算的頻率可以用 Hour 類表示:

>>> from pandas.tseries.offsets import Hour, Minute >>> hour = Hour() >>> hour <Hour> >>> >>> four_hours = Hour(4) >>> four_hours <4 * Hours>

一般來說,無需明確創建這樣的對象,只需使用諸如 "H" 或 "4H" 這樣的字符串別名即可。在基礎頻率前面放上一個整數即可創建倍數:

>>> import pandas as pd >>> pd.date_range('2000-01-01', '2000-01-03 23:59', freq='4h') DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 04:00:00','2000-01-01 08:00:00', '2000-01-01 12:00:00','2000-01-01 16:00:00', '2000-01-01 20:00:00','2000-01-02 00:00:00', '2000-01-02 04:00:00','2000-01-02 08:00:00', '2000-01-02 12:00:00','2000-01-02 16:00:00', '2000-01-02 20:00:00','2000-01-03 00:00:00', '2000-01-03 04:00:00','2000-01-03 08:00:00', '2000-01-03 12:00:00','2000-01-03 16:00:00', '2000-01-03 20:00:00'],dtype='datetime64[ns]', freq='4H')

大部分偏移量對象都可通過加法進行連接:

>>> from pandas.tseries.offsets import Hour, Minute >>> Hour(2) + Minute(30) <150 * Minutes>

對于 freq 參數也可以傳入頻率字符串(如 "2h30min"),這種字符串可以被高效地解析為等效的表達式:

>>> import pandas as pd >>> pd.date_range('2000-01-01', periods=10, freq='1h30min') DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00','2000-01-01 03:00:00', '2000-01-01 04:30:00','2000-01-01 06:00:00', '2000-01-01 07:30:00','2000-01-01 09:00:00', '2000-01-01 10:30:00','2000-01-01 12:00:00', '2000-01-01 13:30:00'],dtype='datetime64[ns]', freq='90T')

這種偏移量還可以用在 datetime 或 Timestamp 對象上:

>>> from pandas.tseries.offsets import Day, MonthEnd >>> now = datetime(2011, 11, 17) >>> now + 3 * Day() Timestamp('2011-11-20 00:00:00')

如果加的是錨點偏移量,比如 MonthEnd,第一次增量會將原日期向前滾動到符合頻率規則的下一個日期:

>>> from pandas.tseries.offsets import Day, MonthEnd >>> now = datetime(2011, 11, 17) >>> now + MonthEnd() Timestamp('2011-11-30 00:00:00') >>> now + MonthEnd(2) Timestamp('2011-12-31 00:00:00')

通過錨點偏移量的 rollforward 和 rollback 方法,可明確地將日期向前或向后滾動:

>>> from pandas.tseries.offsets import Day, MonthEnd >>> now = datetime(2011, 11, 17) >>> offset = MonthEnd() >>> offset.rollforward(now) Timestamp('2011-11-30 00:00:00') >>> offset.rollback(now) Timestamp('2011-10-31 00:00:00')

與 groupby 方法結合使用:

>>> import pandas as pd >>> import numpy as np >>> from pandas.tseries.offsets import Day, MonthEnd >>> obj = pd.Series(np.random.randn(20),index=pd.date_range('1/15/2000', periods=20, freq='4d')) >>> obj 2000-01-15 -0.591729 2000-01-19 -0.775844 2000-01-23 -0.745603 2000-01-27 -0.076439 2000-01-31 1.796417 2000-02-04 -0.500349 2000-02-08 0.515851 2000-02-12 -0.344171 2000-02-16 0.419657 2000-02-20 0.307288 2000-02-24 0.115113 2000-02-28 -0.362585 2000-03-03 1.074892 2000-03-07 1.111366 2000-03-11 0.949910 2000-03-15 -1.535727 2000-03-19 0.545944 2000-03-23 -0.810139 2000-03-27 -1.260627 2000-03-31 -0.128403 Freq: 4D, dtype: float64 >>> >>> offset = MonthEnd() >>> obj.groupby(offset.rollforward).mean() 2000-01-31 -0.078640 2000-02-29 0.021543 2000-03-31 -0.006598 dtype: float64

【02x07】時區處理

在 Python 中,時區信息來自第三方庫 pytz,使用 pytz.common_timezones 方法可以查看所有的時區名稱,使用 pytz.timezone 方法從 pytz 中獲取時區對象:

>>> import pytz >>> pytz.common_timezones ['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', ..., 'UTC'] >>> >>> tz = pytz.timezone('Asia/Shanghai') >>> tz <DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD> # 表示與 UTC 時間相差8小時6分

在 date_range 方法中,tz 參數用于指定時區,默認為 None,可以使用 tz_localize 方法將其進行本地化時區轉換,如下示例中,將無時區轉本地化 UTC 時區:

>>> import pandas as pd >>> import numpy as np >>> rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D') >>> ts = pd.Series(np.random.randn(len(rng)), index=rng) >>> ts 2012-03-09 09:30:00 -1.527913 2012-03-10 09:30:00 -1.116101 2012-03-11 09:30:00 0.359358 2012-03-12 09:30:00 -0.475920 2012-03-13 09:30:00 -0.336570 2012-03-14 09:30:00 -1.075952 Freq: D, dtype: float64 >>> >>> print(ts.index.tz) None >>> >>> ts_utc = ts.tz_localize('UTC') >>> ts_utc 2012-03-09 09:30:00+00:00 -1.527913 2012-03-10 09:30:00+00:00 -1.116101 2012-03-11 09:30:00+00:00 0.359358 2012-03-12 09:30:00+00:00 -0.475920 2012-03-13 09:30:00+00:00 -0.336570 2012-03-14 09:30:00+00:00 -1.075952 Freq: D, dtype: float64 >>> >>> ts_utc.index DatetimeIndex(['2012-03-09 09:30:00+00:00', '2012-03-10 09:30:00+00:00','2012-03-11 09:30:00+00:00', '2012-03-12 09:30:00+00:00','2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00'],dtype='datetime64[ns, UTC]', freq='D')

時間序列被本地化到某個特定時區后,就可以用 tz_convert 方法將其轉換到別的時區了:

>>> import pandas as pd >>> import numpy as np >>> rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D') >>> ts = pd.Series(np.random.randn(len(rng)), index=rng) >>> ts 2012-03-09 09:30:00 0.480303 2012-03-10 09:30:00 -1.461039 2012-03-11 09:30:00 -1.512749 2012-03-12 09:30:00 -2.185421 2012-03-13 09:30:00 1.657845 2012-03-14 09:30:00 0.175633 Freq: D, dtype: float64 >>> >>> ts.tz_localize('UTC').tz_convert('Asia/Shanghai') 2012-03-09 17:30:00+08:00 0.480303 2012-03-10 17:30:00+08:00 -1.461039 2012-03-11 17:30:00+08:00 -1.512749 2012-03-12 17:30:00+08:00 -2.185421 2012-03-13 17:30:00+08:00 1.657845 2012-03-14 17:30:00+08:00 0.175633 Freq: D, dtype: float64
這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/106947061 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

【03x00】period 固定時期

【03x01】pandas.Period

固定時期(period)表示的是時間區間,比如數日、數月、數季、數年等。Period 類所表示的就是這種數據類型,其構造函數需要用到一個字符串或整數。

基本語法:

class pandas.Period(value=None, freq=None, ordinal=None, year=None, month=None, quarter=None, day=None, hour=None, minute=None, second=None)

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.Period.html

常用參數:

參數描述
value時間段
freq時間戳將具有的偏移量,可以是 str,日期偏移量類型,取值參見【02x02】freq 頻率部分取值

以下示例中,Period 對象表示的是從2020年1月1日到2020年12月31日之間的整段時間

>>> import pandas as pd >>> pd.Period(2020, freq='A-DEC') Period('2020', 'A-DEC')

利用加減法對其按照頻率進行位移:

>>> import pandas as pd >>> obj = pd.Period(2020, freq='A-DEC') >>> obj Period('2020', 'A-DEC') >>> >>> obj + 5 Period('2025', 'A-DEC') >>> >>> obj - 5 Period('2015', 'A-DEC')

PeriodIndex 類保存了一組 Period,它可以在任何 pandas 數據結構中被用作軸索引:

>>> import pandas as pd >>> import numpy as np >>> rng = [pd.Period('2000-01'), pd.Period('2000-02'), pd.Period('2000-03'), pd.Period('2000-04'), pd.Period('2000-05'), pd.Period('2000-06')] >>> obj = pd.Series(np.random.randn(6), index=rng) >>> obj 2000-01 0.229092 2000-02 1.515498 2000-03 -0.334401 2000-04 -0.492681 2000-05 -2.012818 2000-06 0.338804 Freq: M, dtype: float64 >>> >>> obj.index PeriodIndex(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05', '2000-06'], dtype='period[M]', freq='M') >>> import pandas as pd >>> values = ['2001Q3', '2002Q2', '2003Q1'] >>> index = pd.PeriodIndex(values, freq='Q-DEC') >>> index PeriodIndex(['2001Q3', '2002Q2', '2003Q1'], dtype='period[Q-DEC]', freq='Q-DEC') >>>

【03x02】period_range

pandas.period_range 方法可根據指定的頻率生成指定長度的 PeriodIndex。

基本語法:

pandas.period_range(start=None, end=None, periods=None, freq=None, name=None) → pandas.core.indexes.period.PeriodIndex

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.period_range.html

常用參數:

參數描述
start起始日期
end結束日期
periods要生成的時段數
freq時間戳將具有的偏移量,可以是 str,日期偏移量類型,取值參見【02x02】freq 頻率部分取值
name結果 PeriodIndex 對象名稱

簡單應用:

>>> import pandas as pd >>> pd.period_range(start='2019-01-01', end='2020-01-01', freq='M') PeriodIndex(['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06','2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12','2020-01'],dtype='period[M]', freq='M') >>> >>> pd.period_range(start=pd.Period('2017Q1', freq='Q'),end=pd.Period('2017Q2', freq='Q'), freq='M') PeriodIndex(['2017-03', '2017-04', '2017-05', '2017-06'], dtype='period[M]', freq='M')

【03x03】asfreq 時期頻率轉換

Period 和 PeriodIndex 對象都可以通過 asfreq 方法被轉換成別的頻率。

基本語法:PeriodIndex.asfreq(self, *args, **kwargs)

常用參數:

參數描述
freq新的頻率(偏移量),取值參見【02x02】freq 頻率部分取值
how按照開始或者結束對齊,'E' or 'END' or 'FINISH';'S' or 'START' or 'BEGIN'

應用示例:

>>> import pandas as pd >>> pidx = pd.period_range('2010-01-01', '2015-01-01', freq='A') >>> pidx PeriodIndex(['2010', '2011', '2012', '2013', '2014', '2015'], dtype='period[A-DEC]', freq='A-DEC') >>> >>> pidx.asfreq('M') PeriodIndex(['2010-12', '2011-12', '2012-12', '2013-12', '2014-12', '2015-12'], dtype='period[M]', freq='M') >>> >>> pidx.asfreq('M', how='S') PeriodIndex(['2010-01', '2011-01', '2012-01', '2013-01', '2014-01', '2015-01'], dtype='period[M]', freq='M')

【03x04】to_period 與 to_timestamp()

to_period 方法可以將 Timestamp(時間戳) 轉換為 Period(固定時期);

to_timestamp 方法可以將 Period(固定時期)轉換為 Timestamp(時間戳) 。

>>> import pandas as pd >>> rng = pd.date_range('2000-01-01', periods=3, freq='M') >>> ts = pd.Series(np.random.randn(3), index=rng) >>> ts 2000-01-31 0.220759 2000-02-29 -0.108221 2000-03-31 0.819433 Freq: M, dtype: float64 >>> >>> pts = ts.to_period() >>> pts 2000-01 0.220759 2000-02 -0.108221 2000-03 0.819433 Freq: M, dtype: float64 >>> >>> pts2 = pts.to_timestamp() >>> pts2 2000-01-01 0.220759 2000-02-01 -0.108221 2000-03-01 0.819433 Freq: MS, dtype: float64 >>> >>> ts.index DatetimeIndex(['2000-01-31', '2000-02-29', '2000-03-31'], dtype='datetime64[ns]', freq='M') >>> >>> pts.index PeriodIndex(['2000-01', '2000-02', '2000-03'], dtype='period[M]', freq='M') >>> >>> pts2.index DatetimeIndex(['2000-01-01', '2000-02-01', '2000-03-01'], dtype='datetime64[ns]', freq='MS')

【04x00】timedelta 時間間隔

【04x01】pandas.Timedelta

Timedelta 表示持續時間,即兩個日期或時間之間的差。

Timedelta 相當于 Python 的 datetime.timedelta,在大多數情況下兩者可以互換。

基本語法:class pandas.Timedelta(value=<object object>, unit=None, **kwargs)

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.Timedelta.html

常用參數:

參數描述
value傳入的值,可以是 Timedelta,timedelta,np.timedelta64,string 或 integer 對象
unit用于設置 value 的單位,具體取值參見官方文檔

表示兩個 datetime 對象之間的時間差:

>>> import pandas as pd >>> pd.to_datetime('2020-6-24') - pd.to_datetime('2016-1-1') Timedelta('1636 days 00:00:00')

通過字符串傳遞參數:

>>> import pandas as pd >>> pd.Timedelta('3 days 3 hours 3 minutes 30 seconds') Timedelta('3 days 03:03:30')

通過整數傳遞參數:

>>> import pandas as pd >>> pd.Timedelta(5,unit='h') Timedelta('0 days 05:00:00')

獲取屬性:

>>> import pandas as pd >>> obj = pd.Timedelta('3 days 3 hours 3 minutes 30 seconds') >>> obj Timedelta('3 days 03:03:30') >>> >>> obj.days 3 >>> obj.seconds 11010

【04x02】to_timedelta

to_timedelta 方法可以將傳入的對象轉換成 timedelta 對象。

基本語法:pandas.to_timedelta(arg, unit='ns', errors='raise')

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.to_timedelta.html

常用參數:

參數描述
arg要轉換為 timedelta 的對象,可以是 str,timedelta,list-like 或 Series 對象
unit用于設置 arg 的單位,具體取值參見官方文檔
errors如果 arg 不滿足時間戳的形式,是否會發生異常
ignore:不引發異常,返回原始輸入;raise:無效解析將引發異常(默認);coerce:無效解析將被設置為NaT

將單個字符串解析為 timedelta 對象:

>>> import pandas as pd >>> pd.to_timedelta('1 days 06:05:01.00003') Timedelta('1 days 06:05:01.000030') >>> >>> pd.to_timedelta('15.5us') Timedelta('0 days 00:00:00.000015')

將字符串列表或數組解析為 timedelta 對象:

>>> import pandas as pd >>> pd.to_timedelta(['1 days 06:05:01.00003', '15.5us', 'nan']) TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015', NaT], dtype='timedelta64[ns]', freq=None)

指定 unit 參數:

>>> import pandas as pd >>> pd.to_timedelta(np.arange(5), unit='s') TimedeltaIndex(['00:00:00', '00:00:01', '00:00:02', '00:00:03', '00:00:04'], dtype='timedelta64[ns]', freq=None) >>> >>> pd.to_timedelta(np.arange(5), unit='d') TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq=None)

【04x03】timedelta_range

timedelta_range 方法可根據指定的頻率生成指定長度的 TimedeltaIndex。

基本語法:

pandas.timedelta_range(start=None, end=None, periods=None,freq=None, name=None, closed=None) → pandas.core.indexes.timedeltas.TimedeltaIndex

官方文檔:https://pandas.pydata.org/docs/reference/api/pandas.timedelta_range.html

常用參數:

參數描述
start開始日期
end結束日期
periodsint 類型,要生成的時段數
freq頻率字符串,即按照某種特定的頻率來生成日期,取值參見【02x02】freq 頻率部分取值
name結果 TimedeltaIndex 的名稱
closedNone:默認值,同時保留開始日期和結束日期
'left':保留開始日期,不保留結束日期
'right':保留結束日期,不保留開始日期

應用示例:

>>> import pandas as pd >>> pd.timedelta_range(start='1 day', periods=4) TimedeltaIndex(['1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D')

closed 參數指定保留哪個端點。默認保留兩個端點:

>>> import pandas as pd >>> pd.timedelta_range(start='1 day', periods=4, closed='right') TimedeltaIndex(['2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D')

freq 參數指定 TimedeltaIndex 的頻率。只接受固定頻率,非固定頻率如 'M' 將會報錯:

>>> import pandas as pd >>> pd.timedelta_range(start='1 day', end='2 days', freq='6H') TimedeltaIndex(['1 days 00:00:00', '1 days 06:00:00', '1 days 12:00:00','1 days 18:00:00', '2 days 00:00:00'],dtype='timedelta64[ns]', freq='6H') >>> >>> pd.timedelta_range(start='1 day', end='2 days', freq='M') Traceback (most recent call last): ... ValueError: <MonthEnd> is a non-fixed frequency

【05x00】重采樣及頻率轉換

重采樣(resampling)指的是將時間序列從一個頻率轉換到另一個頻率的處理過程。將高頻率數據聚合到低頻率稱為降采樣(downsampling),而將低頻率數據轉換到高頻率則稱為升采樣(upsampling)。并不是所有的重采樣都能被劃分到這兩個大類中。例如,將 W-WED(每周三)轉換為 W-FRI 既不是降采樣也不是升采樣。

Pandas 中提供了 resample 方法來幫助我們實現重采樣。Pandas 對象都帶有一個 resample 方法,它是各種頻率轉換工作的主力函數。

基本語法:

Series.resample(self, rule, axis=0, closed: Union[str, NoneType] = None, label: Union[str, NoneType] = None, convention: str = 'start', kind: Union[str, NoneType] = None, loffset=None, base: int = 0, on=None, level=None) DataFrame.resample(self, rule, axis=0, closed: Union[str, NoneType] = None, label: Union[str, NoneType] = None, convention: str = 'start', kind: Union[str, NoneType] = None, loffset=None, base: int = 0, on=None, level=None)

常用參數:

參數描述
rule
axis重采樣的軸,默認 0
closed在重采樣中,各時間段的哪一端是閉合(即包含)的,
除 'M'、'A'、'Q'、'BM'、'BA'、'BQ' 和 'W' 默認值為 ‘right’ 外,其他默認值為 'left‘
label在重采樣中,如何設置聚合值的標簽, right 或 left,默認為 None,
例如,9:30 到 9:35 之間的這 5 分鐘會被標記為 9:30 或 9:35
convention僅用于 PeriodIndex(固定時期),對周期進行重采樣,'start' or 's','end' or 'e'
on對于 DataFrame 對象,可用該參數指定重采樣后的數據的 index(行索引) 為原數據中的某列
level對于具有層級索引(MultiIndex)的 DataFrame 對象,可以使用該參數來指定需要在哪個級別上進行重新采樣

將序列重采樣到三分鐘的頻率,并將每個頻率的值相加:

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('3T').sum() 2000-01-01 00:00:00 3 2000-01-01 00:03:00 12 2000-01-01 00:06:00 21 Freq: 3T, dtype: int64

設置 label='right',即每個索引 index 會使用靠右側(較大值)的標簽:

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('3T', label='right').sum() 2000-01-01 00:03:00 3 2000-01-01 00:06:00 12 2000-01-01 00:09:00 21 Freq: 3T, dtype: int64

設置 closed='right',即結果中會包含原數據中最右側(較大)的值:

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('3T', label='right', closed='right').sum() 2000-01-01 00:00:00 0 2000-01-01 00:03:00 6 2000-01-01 00:06:00 15 2000-01-01 00:09:00 15 Freq: 3T, dtype: int64

以下示例將序列重采樣到30秒的頻率,asfreq()[0:5] 用于選擇前5行數據:

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('30S').asfreq()[0:5] 2000-01-01 00:00:00 0.0 2000-01-01 00:00:30 NaN 2000-01-01 00:01:00 1.0 2000-01-01 00:01:30 NaN 2000-01-01 00:02:00 2.0 Freq: 30S, dtype: float64

使用 pad 方法向后填充缺失值(NaN):

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('30S').pad()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 0 2000-01-01 00:01:00 1 2000-01-01 00:01:30 1 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64

使用 bfill 方法向前填充缺失值(NaN):

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> series.resample('30S').bfill()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 1 2000-01-01 00:01:00 1 2000-01-01 00:01:30 2 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64

通過 apply 方法傳遞自定義函數:

>>> import pandas as pd >>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64 >>> >>> def custom_resampler(array_like):return np.sum(array_like) + 5>>> series.resample('3T').apply(custom_resampler) 2000-01-01 00:00:00 8 2000-01-01 00:03:00 17 2000-01-01 00:06:00 26 Freq: 3T, dtype: int64

convention 參數的應用:

>>> import pandas as pd >>> s = pd.Series([1, 2], index=pd.period_range('2012-01-01', freq='A', periods=2)) >>> s 2012 1 2013 2 Freq: A-DEC, dtype: int64 >>> >>> s.resample('Q', convention='start').asfreq() 2012Q1 1.0 2012Q2 NaN 2012Q3 NaN 2012Q4 NaN 2013Q1 2.0 2013Q2 NaN 2013Q3 NaN 2013Q4 NaN Freq: Q-DEC, dtype: float64 >>> >>> s.resample('Q', convention='end').asfreq() 2012Q4 1.0 2013Q1 NaN 2013Q2 NaN 2013Q3 NaN 2013Q4 2.0 Freq: Q-DEC, dtype: float64 >>> import pandas as pd >>> q = pd.Series([1, 2, 3, 4], index=pd.period_range('2018-01-01', freq='Q', periods=4)) >>> q 2018Q1 1 2018Q2 2 2018Q3 3 2018Q4 4 Freq: Q-DEC, dtype: int64 >>> >>> q.resample('M', convention='end').asfreq() 2018-03 1.0 2018-04 NaN 2018-05 NaN 2018-06 2.0 2018-07 NaN 2018-08 NaN 2018-09 3.0 2018-10 NaN 2018-11 NaN 2018-12 4.0 Freq: M, dtype: float64 >>> >>> q.resample('M', convention='start').asfreq() 2018-01 1.0 2018-02 NaN 2018-03 NaN 2018-04 2.0 2018-05 NaN 2018-06 NaN 2018-07 3.0 2018-08 NaN 2018-09 NaN 2018-10 4.0 2018-11 NaN 2018-12 NaN Freq: M, dtype: float64

對于 DataFrame 對象,可以使用關鍵字 on 來指定原數據中的某列為重采樣后數據的行索引:

>>> import pandas as pd >>> d = dict({'price': [10, 11, 9, 13, 14, 18, 17, 19],'volume': [50, 60, 40, 100, 50, 100, 40, 50]}) >>> df = pd.DataFrame(d) >>> df['week_starting'] = pd.date_range('01/01/2018', periods=8, freq='W') >>> dfprice volume week_starting 0 10 50 2018-01-07 1 11 60 2018-01-14 2 9 40 2018-01-21 3 13 100 2018-01-28 4 14 50 2018-02-04 5 18 100 2018-02-11 6 17 40 2018-02-18 7 19 50 2018-02-25 >>> >>> df.resample('M', on='week_starting').mean()price volume week_starting 2018-01-31 10.75 62.5 2018-02-28 17.00 60.0

對于具有層級索引(MultiIndex)的 DataFrame 對象,可以使用關鍵字 level 來指定需要在哪個級別上進行重新采樣:

>>> import pandas as pd >>> days = pd.date_range('1/1/2000', periods=4, freq='D') >>> d2 = dict({'price': [10, 11, 9, 13, 14, 18, 17, 19],'volume': [50, 60, 40, 100, 50, 100, 40, 50]}) >>> df2 = pd.DataFrame(d2, index=pd.MultiIndex.from_product([days, ['morning', 'afternoon']])) >>> df2price volume 2000-01-01 morning 10 50afternoon 11 60 2000-01-02 morning 9 40afternoon 13 100 2000-01-03 morning 14 50afternoon 18 100 2000-01-04 morning 17 40afternoon 19 50 >>> >>> df2.resample('D', level=0).sum()price volume 2000-01-01 21 110 2000-01-02 22 140 2000-01-03 32 150 2000-01-04 36 90
這里是一段防爬蟲文本,請讀者忽略。 本文原創首發于 CSDN,作者 TRHX。 博客首頁:https://itrhx.blog.csdn.net/ 本文鏈接:https://itrhx.blog.csdn.net/article/details/106947061 未經授權,禁止轉載!惡意轉載,后果自負!尊重原創,遠離剽竊!

總結

以上是生活随笔為你收集整理的Python 数据分析三剑客之 Pandas(九):时间序列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

色先锋资源网 | 亚洲黄色一级视频 | 亚洲日本韩国一区二区 | 开心激情五月婷婷 | 国产中文字幕免费 | 国产麻豆精品一区二区 | 91精品啪 | 中文在线字幕免费观 | 在线日韩| 国产福利不卡视频 | 天天爱天天色 | 亚洲精品白浆高清久久久久久 | 色偷偷av男人天堂 | 国产精品久久久久久久久久久久久 | 久久论理 | 婷婷去俺也去六月色 | 狠狠干狠狠操 | 91麻豆精品国产91久久久更新时间 | 97成人在线免费视频 | 国产福利91精品一区二区三区 | 日韩免| 在线看av网址 | 国产手机av | 成人av影院在线观看 | 免费日韩高清 | 青春草免费在线视频 | 久久久精品网站 | 欧美日韩国产二区三区 | 亚洲国产精品久久久久久 | 亚洲一级免费观看 | www.成人久久 | 九九影视理伦片 | 天天操天天干天天摸 | 精品uu | 中文字幕在线人 | 日韩女同一区二区三区在线观看 | 成年人黄色在线观看 | 中文字幕在线国产精品 | 中文字幕日韩免费视频 | 日韩电影在线观看一区 | 久草在线高清视频 | 久精品一区 | 96精品视频 | 久久不射电影网 | 久久毛片网 | 久久久久久久久久电影 | 成人 国产 在线 | 色狠狠一区二区 | 91大神精品视频在线观看 | 安徽妇搡bbbb搡bbbb | 人人爽人人舔 | 四虎精品成人免费网站 | 精品国产自在精品国产精野外直播 | 高潮久久久久久久久 | 天天插天天干天天操 | 亚洲在线视频免费 | 九九热在线精品 | 久久久久成人精品亚洲国产 | 国产在线视频不卡 | 91麻豆看国产在线紧急地址 | 一区二区三区四区在线免费观看 | 亚洲一区二区三区miaa149 | 婷婷久久丁香 | 国产精品6 | 91在线日韩 | 日本黄色免费在线观看 | 狠狠操导航 | 98超碰在线观看 | 天天干夜夜想 | 超碰在线97观看 | 久久精品a| 在线观看黄网站 | 国产午夜精品一区 | 狠狠色丁香久久婷婷综合丁香 | 91久久人澡人人添人人爽欧美 | 午夜av免费 | 久草在线高清视频 | 中文字幕在线观看不卡 | 亚洲综合黄色 | 久久综合精品一区 | 精品在线视频一区 | 国产成人精品福利 | 4438全国亚洲精品观看视频 | 久久久五月天 | 在线亚洲观看 | 日韩电影在线观看一区 | 毛片一级免费一级 | 色诱亚洲精品久久久久久 | 一区二区视 | 国产精品女人网站 | 精品一区二区在线观看 | 一级一级一片免费 | 日韩网站在线免费观看 | 综合天堂av久久久久久久 | 国产日韩在线视频 | 成 人 黄 色视频免费播放 | 亚洲黄色免费电影 | 日韩一区二区三区在线观看 | 最近中文字幕视频完整版 | 亚洲久草在线 | 国产高清绿奴videos | 99草视频| 一区二区三区韩国免费中文网站 | 亚洲欧美成人综合 | 亚洲视频在线观看免费 | 久久久精品电影 | 亚洲精品9| 国产高清黄 | 亚洲涩涩网站 | 欧美一区二区精美视频 | 成人av手机在线 | 成 人 免费 黄 色 视频 | 久久综合九色综合97婷婷女人 | 日韩欧美精品在线观看视频 | 日韩高清二区 | 亚洲毛片久久 | 九九九九热精品免费视频点播观看 | 成全在线视频免费观看 | 成人高清在线 | 国产精品高潮呻吟久久av无 | 久久综合色8888| 成人一级黄色片 | 国产成人黄色片 | 日韩欧美69 | 免费av看片| 黄色一级在线观看 | 日韩av一区二区三区四区 | 蜜臀av夜夜澡人人爽人人 | 欧美aaa大片| 免费看的黄网站 | www.成人久久 | 一区二区三区四区免费视频 | 国产一级一片免费播放放 | 超碰97成人 | 日韩精品免费在线播放 | 91麻豆高清视频 | 亚洲天堂网在线视频 | 麻豆传媒精品 | 91在线网站| 国产福利av在线 | 亚洲涩涩涩 | 欧美激情精品一区 | 日韩av电影一区 | 五月婷婷久久丁香 | 免费av观看 | 欧美精品久久久久久久久久丰满 | 精品一区二区久久久久久久网站 | 国产日韩三级 | 国产一区二区三区高清播放 | 国产精品免费麻豆入口 | 日本在线h | 日韩精品一区二区三区水蜜桃 | 国产成人高清在线 | 毛片精品免费在线观看 | 久草视频在线资源站 | 久久精品免费观看 | 免费观看第二部31集 | 在线免费色视频 | 97在线资源 | 九九亚洲视频 | 视频国产一区二区三区 | 国产精品麻豆免费版 | 99久久久国产免费 | 中文字幕日韩无 | 91香蕉亚洲精品 | 偷拍视频一区 | 色婷婷午夜 | 成人97视频 | 久久久久久久久久国产精品 | 97色在线观看免费视频 | 精品专区一区二区 | 岛国av在线 | 日韩剧| 国产精品一区二区无线 | 精品国产乱码一区二区三区在线 | 美女黄久久 | 国产成人三级 | 日韩欧美有码在线 | 久久久久久久久国产 | 欧美日韩精品免费观看 | 天天爱天天色 | 亚洲精品mv在线观看 | 91最新在线观看 | 亚洲免费激情 | 在线有码中文 | av亚洲产国偷v产偷v自拍小说 | 国产视频午夜 | 福利片免费看 | 在线观看日韩精品视频 | 在线视频欧美日韩 | 在线探花 | 一区二区视频在线免费观看 | 在线视频你懂得 | 综合色站导航 | 99re国产视频 | 国产精品一区免费在线观看 | 国产不卡在线播放 | 国产99免费视频 | 国产裸体bbb视频 | 亚洲精品2区 | 国产精品v欧美精品v日韩 | 国产精品成人一区二区三区吃奶 | www.五月婷婷| a爱爱视频 | 国产剧情亚洲 | 蜜桃麻豆www久久囤产精品 | 久久激情久久 | 亚洲精品在线国产 | 成年人在线观看视频免费 | 一区二区三区久久精品 | 在线看v片成人 | 91在线影视 | 黄色大片日本 | 欧美成人高清 | 天天综合网国产 | 国产a国产 | 黄色av三级在线 | 婷婷色网站 | 国产美女网站在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 91丨九色丨蝌蚪丰满 | a黄色影院 | 国产精品国产三级国产专区53 | 六月色丁 | 激情深爱| 美女久久精品 | 狠狠色丁香婷婷综合久久片 | 91麻豆精品国产91久久久久久久久 | 久久久黄视频 | 国产精品久久久久久久久久久久午夜 | 亚洲黄色区 | 日韩视频中文字幕在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久精品www人人爽人人 | 波多野结衣视频一区 | 午夜电影av | 国产免费a | 综合久久久久久 | 96在线 | 国产美女免费视频 | 天天做天天射 | 中文字幕在线看视频国产 | 在线日本v二区不卡 | 涩涩成人在线 | 日本黄区免费视频观看 | 亚洲无线视频 | 免费十分钟 | 久久精品99北条麻妃 | 人人干网站 | 天天玩天天干 | 在线观看免费黄色 | 亚洲第一色 | 夜添久久精品亚洲国产精品 | 成人黄色免费在线观看 | 99久久精品午夜一区二区小说 | 最近的中文字幕大全免费版 | 超碰97.com| 亚洲国产中文在线观看 | 不卡视频一区二区三区 | 国产午夜一区 | 亚洲最快最全在线视频 | 国产高清在线一区 | 四虎永久视频 | 国产精品va视频 | 亚洲视屏一区 | 韩国av免费在线 | 免费在线观看亚洲视频 | 国产91学生| 色网影音先锋 | 成人免费视频观看 | 国产日韩视频在线播放 | 97精品国自产拍在线观看 | 国产小视频免费观看 | 国产精品久久久久久久久久白浆 | 亚洲欧美日韩一二三区 | 豆豆色资源网xfplay | av在线激情| 久久久久美女 | 女人高潮一级片 | 亚洲天堂社区 | 婷婷丁香久久五月婷婷 | 99r在线| 黄色激情网址 | 99精品免费在线观看 | 亚洲视频在线视频 | 午夜精品久久久久久久久久久 | 天天干夜夜擦 | 探花视频免费观看 | 激情久久影院 | 成人va天堂 | 久久99久久99免费视频 | 五月天婷婷免费视频 | 午夜精品一区二区三区四区 | 国产高清视频在线免费观看 | 免费观看xxxx9999片 | 午夜免费在线观看 | 久久人91精品久久久久久不卡 | av看片网 | 91在线在线观看 | 久艹视频在线免费观看 | 一级片视频免费观看 | 免费视频资源 | 一区二区三区四区精品视频 | 国产免费黄视频在线观看 | 超薄丝袜一二三区 | 国产又黄又爽又猛视频日本 | 色综合中文综合网 | 国产精品久久久久久久av电影 | 久久毛片网 | 久久久在线免费观看 | 精品美女视频 | 国产亚州精品视频 | 亚洲欧美乱综合图片区小说区 | 天天综合日日夜夜 | 国产精品初高中精品久久 | 日日操日日插 | 欧美日韩国产精品一区二区亚洲 | 日韩亚洲在线观看 | 成年人免费电影在线观看 | 韩国在线一区二区 | 丁香婷婷深情五月亚洲 | 欧美在线资源 | 91精品中文字幕 | 91视频这里只有精品 | 99精品国产在热久久 | 亚洲资源网 | 99视频在线播放 | 香蕉视频在线看 | 午夜精品电影一区二区在线 | 丁香花在线视频观看免费 | 成人黄色免费在线观看 | 欧美狠狠操 | 久久国产精品网站 | 免费电影播放 | 在线亚洲天堂网 | 一级黄视频 | 国产97色 | 日韩综合第一页 | 国产特级毛片aaaaaa毛片 | 最近日韩中文字幕中文 | 91桃色视频 | 丁香花在线观看免费完整版视频 | 成人国产精品久久久春色 | 亚洲一区二区三区四区在线视频 | www.伊人网| 国产在线观看免 | 国产不卡网站 | 国产黄色资源 | 五月综合色婷婷 | 国产精品免费一区二区三区 | 韩国av免费 | 午夜精品视频免费在线观看 | 青春草视频在线播放 | 午夜国产福利在线 | 丁香六月av | 欧美与欧洲交xxxx免费观看 | 四虎影视成人永久免费观看视频 | 亚洲伊人第一页 | 精品一区二区三区久久久 | 国产美女在线观看 | 亚洲一区欧美激情 | 成人a免费 | 成 人 免费 黄 色 视频 | 久久久久成人精品免费播放动漫 | 香蕉在线观看视频 | 欧美日韩在线观看视频 | 在线播放91 | 日韩免费小视频 | 99国产精品视频免费观看一公开 | 日韩精品一区二区在线观看 | 天天天天射 | 国产黄色大片 | 亚洲高清在线视频 | 久久国产成人午夜av影院潦草 | 正在播放五月婷婷狠狠干 | 久久久久免费网 | 91亚洲影院| 天天艹天天 | 欧美亚洲一级片 | 成年人免费在线观看网站 | a色视频| 婷婷色 亚洲 | 四虎影视成人永久免费观看亚洲欧美 | 国产va精品免费观看 | 久久国产精品影视 | 五月婷婷丁香在线观看 | 国产精品久久99 | 婷婷六月激情 | 欧美久草网 | 欧美孕妇与黑人孕交 | 国产色视频123区 | 久草在线最新视频 | 久久一级片| 97视频免费观看 | 成年人免费在线播放 | www天天干com| 国产裸体无遮挡 | 国产精品男女啪啪 | 精品美女在线视频 | 久久国产成人午夜av影院宅 | 永久免费精品视频 | 欧美视频99 | 国产在线观看二区 | 中文在线亚洲 | 久久热首页 | 人人爽网站| 视频直播国产精品 | 国产精品久久久久免费 | 夜添久久精品亚洲国产精品 | 国产成人久久精品亚洲 | 久久激情视频网 | 蜜臀一区二区三区精品免费视频 | 久久久久亚洲最大xxxx | 久久男人免费视频 | 国产精品久久 | 91精品久久久久久久久久入口 | 人人爽人人爽人人片av | 国产精品99久久久久久大便 | 久久天天拍 | 日产中文字幕 | 国产成人精品一二三区 | av电影在线观看 | 中文字幕视频免费观看 | 国产一线在线 | 成人在线视频在线观看 | 精品一区二区三区在线播放 | 国产操在线 | 麻豆视频国产在线观看 | 亚洲伊人成综合网 | 成人精品影视 | 久久久亚洲精品 | 91刺激视频 | 91高清完整版在线观看 | 最近字幕在线观看第一季 | 国产日韩欧美精品在线观看 | 欧美日韩一区二区视频在线观看 | 亚州av网站 | 国色天香永久免费 | 九九热精品国产 | 毛片网站免费在线观看 | 国产精品破处视频 | 久久se视频 | 亚洲精品国产精品国自产 | 国产中文字幕一区 | 美女视频a美女大全免费下载蜜臀 | 久草视频在线免费 | 96av在线| 午夜精品99久久免费 | 中文区中文字幕免费看 | 久久久久美女 | 中文字幕在线第一页 | 久久久伊人网 | 国产一区免费在线观看 | 美女视频网 | 久久国产精品免费视频 | 99久久久久 | 久精品在线 | 97香蕉视频| 97天堂| 蜜桃传媒一区二区 | 最新国产精品亚洲 | 国产色影院 | 色姑娘综合天天 | 亚洲日本va在线观看 | 久久久久成人免费 | 五月婷婷六月丁香在线观看 | 在线观看 亚洲 | 99久热在线精品 | 探花国产在线 | 91人人揉日日捏人人看 | 国产黄视频在线观看 | 日韩在线中文字幕视频 | 日本视频久久久 | 激情五月婷婷激情 | 中文字幕亚洲不卡 | 久久在线播放 | 精品视频123区在线观看 | 久久五月激情 | 国产在线不卡视频 | 中文国产在线观看 | 日本高清免费中文字幕 | 久久视频在线观看免费 | 亚洲欧美激情插 | 亚洲一级电影在线观看 | 欧美另类高清 videos | 青青河边草免费视频 | 久色网 | 天天操夜夜逼 | 美女福利视频一区二区 | 亚洲视频久久久 | 超碰在线最新地址 | 久久久久久久久久久免费视频 | 国产午夜精品一区二区三区在线观看 | 色网免费观看 | 久草av在线播放 | 国产精品久久久久久久久久免费看 | 久久一区国产 | 日韩啪视频 | 缴情综合网五月天 | 麻豆 91 在线 | 欧美色综合 | 亚洲va欧美va国产va黑人 | 91视频免费 | 日本黄色免费在线 | 国产精品一区二区免费在线观看 | 色婷婷综合久久久久中文字幕1 | 激情婷婷在线 | 91女子私密保健养生少妇 | 久久五月婷婷综合 | 偷拍福利视频一区二区三区 | 中文字幕韩在线第一页 | 99爱这里只有精品 | 手机成人av在线 | 天天操天天操天天操天天操天天操 | 欧美一级片在线观看视频 | 亚洲精品视频免费在线观看 | 精品一区二区三区香蕉蜜桃 | a天堂免费| 亚洲精品成人av在线 | 99热超碰 | 五月天亚洲精品 | 国产资源av | av免费片 | 久久视讯 | 日韩精品无码一区二区三区 | 97超碰在| 国内久久久久久 | 少妇性色午夜淫片aaaze | 在线观看日韩精品视频 | 色婷婷综合视频在线观看 | 国产裸体永久免费视频网站 | 精品国产视频在线观看 | 综合网中文字幕 | 日日夜夜天天久久 | 黄色大片av | 人人爽人人干 | 99热官网| 亚洲aⅴ在线| 免费在线观看av网站 | 人人澡人人添人人爽一区二区 | 亚洲特级毛片 | 国产白浆视频 | 久久久久久久影视 | 免费人成在线观看网站 | 国产精品久久久久aaaa九色 | 国内精品视频在线 | 美女久久久久久久久久 | 在线有码中文字幕 | 最近高清中文字幕 | 干干夜夜 | 一区国产精品 | 日本在线精品视频 | 激情综合网在线观看 | 婷婷色中文| 一二三区av| 美女精品久久久 | 成人免费视频网站 | 丁香花在线视频观看免费 | 国产在线观看你懂的 | 久久综合99| 久久精品3| 亚洲免费一级电影 | 欧美激情va永久在线播放 | av一区二区在线观看中文字幕 | 一区二区三区动漫 | 久久综合丁香 | 久久久久一区 | 国产成人三级在线 | 久草在线免费资源 | 亚洲综合五月天 | 99久高清在线观看视频99精品热在线观看视频 | 免费视频 你懂的 | 日本中文字幕视频 | 精品国产自在精品国产精野外直播 | 色wwww| 久久99欧美| 国产一二三区在线观看 | 久久综合九色 | 狠狠的操你 | 亚洲久久视频 | 在线观看www视频 | 最近中文字幕视频网 | 国产视频精选 | 九九热有精品 | 日韩av不卡在线观看 | 久久久午夜精品理论片中文字幕 | 久久九九影院 | 国产精品高潮在线观看 | 色多多视频在线观看 | 97日日| 国产精品手机播放 | 97在线免费观看视频 | 91av久久 | 久久精品亚洲精品国产欧美 | 亚洲 成人 欧美 | 欧美一区二区三区免费观看 | 欧美午夜精品久久久久 | av成人在线电影 | 在线视频 你懂得 | 成年人在线播放视频 | 91成人小视频 | 成年人免费在线观看网站 | 亚洲最新av在线网站 | japanesexxxhd奶水 91在线精品一区二区 | 日韩精品一卡 | 草久久久| 97精品视频在线播放 | 99在线热播 | 欧美性极品xxxx做受 | 97中文字幕 | 中文字幕免费一区 | 国产精品久久中文字幕 | 精品久久久久久久久久久久久 | 亚洲欧美日本国产 | 麻豆视屏| 97在线免费视频 | 91精品免费 | 一区二区中文字幕在线播放 | 久久电影中文字幕视频 | 亚洲在线精品 | 最新色站| 免费三级在线 | 日韩精品久久久久久久电影竹菊 | 久久 在线| 97电影网手机版 | 精品国产久 | 911精品美国片911久久久 | 欧美精品一级视频 | 天天色播 | 欧美色就是色 | 夜夜躁狠狠躁日日躁视频黑人 | 亚洲 欧美 精品 | 99午夜| 香蕉久久久久久av成人 | 日韩,中文字幕 | 欧美人牲| 国产精品一区二区三区久久 | 91成人在线视频 | 欧美综合在线视频 | 韩日三级av | 18久久久| 97av视频在线观看 | 国产小视频免费在线观看 | 亚洲天堂激情 | 天天摸日日摸人人看 | 右手影院亚洲欧美 | 日韩av视屏 | 精品国产人成亚洲区 | 天天操 夜夜操 | 久久久久久免费毛片精品 | 日日干天天操 | 888av | 91在线免费播放视频 | 中文成人字幕 | 欧美一级免费 | 在线观看视频免费播放 | 日本中文字幕电影在线免费观看 | 成人久久久电影 | 91av中文字幕| 91香蕉视频好色先生 | 日韩三级视频在线观看 | 99在线视频免费观看 | 日韩免费一区二区在线观看 | 91视频大全 | 成人在线电影观看 | 涩涩网站在线播放 | 国产99在线播放 | 18av在线视频| 日韩剧情 | 69av视频在线| 国产一级性生活 | 成年人免费看片 | 91在线看免费 | 成人h在线播放 | 最近中文字幕高清字幕在线视频 | 99热在线观看 | 五月婷香蕉久色在线看 | 丁香午夜婷婷 | 在线免费观看黄 | 一级黄网| 99在线观看视频 | 亚洲激情久久 | 麻豆传媒在线视频 | 亚洲国产大片 | 国产精品 日韩精品 | 免费在线观看av电影 | av高清一区 | 亚洲91av| 国产在线精品福利 | 99久久精品国产一区二区成人 | 亚洲精品视频久久 | 日韩av线观看 | 日本公乱妇视频 | www.91成人 | 日韩精品免费一区二区三区 | 色综合网在线 | 中文成人字幕 | 成人在线免费观看网站 | 欧洲在线免费视频 | 国产精品亚洲片夜色在线 | 99色婷婷| 在线观看日韩 | 国产一区播放 | 九九视频这里只有精品 | 欧美天天综合网 | 亚洲九九九在线观看 | 亚洲乱码久久久 | 视频一区二区在线 | 天天射天天干 | 国产福利精品一区二区 | 毛片1000部免费看 | 午夜日b视频| 97人人澡人人爽人人模亚洲 | 国产日韩精品一区二区在线观看播放 | 久久伊99综合婷婷久久伊 | 国产高清免费在线观看 | 久久综合九色欧美综合狠狠 | a√资源在线 | 久久久久久国产一区二区三区 | 中文字幕第| av黄色国产 | 久久久高清一区二区三区 | 国产 一区二区三区 在线 | 黄色在线观看免费网站 | 99久久精品日本一区二区免费 | 亚洲一区天堂 | 免费人成在线观看 | 在线三级av | 亚洲自拍偷拍色图 | 在线播放精品一区二区三区 | 碰超在线 | 成 人 黄 色 视频免费播放 | 欧美一级高清片 | 手机色站 | 99精品视频在线播放观看 | 97碰在线 | 亚洲另类视频 | 亚洲 欧洲av | 亚洲 成人 欧美 | 在线观看一区 | 久久久久久久久精 | 欧美一区二区三区免费看 | 久久99精品国产一区二区三区 | 91精彩视频 | 干干夜夜 | 欧美日韩一级在线 | 激情五月在线视频 | 天海翼一区二区三区免费 | 久久久精品网站 | 中文字幕在线一区观看 | 中文字幕日韩有码 | 欧美一级片免费在线观看 | 激情小说网站亚洲综合网 | 久久免费在线视频 | 国产精品美女在线 | 久久爽久久爽久久av东京爽 | 在线免费观看欧美日韩 | 国产精品手机看片 | 狠狠五月天 | 黄网av在线| 欧美先锋影音 | 久久综合影音 | 激情婷婷av| 亚洲人在线 | 激情丁香综合五月 | 97精品国产 | 久久精品国产精品亚洲精品 | 毛片无卡免费无播放器 | 亚洲精品18p | 婷婷久久综合九色综合 | 亚洲成人一区 | 天天操天天射天天 | 亚洲人成人天堂h久久 | 国产精品手机播放 | 国产又粗又猛又黄又爽 | 精品99免费 | 日韩视频免费观看高清完整版在线 | 丁香花在线观看免费完整版视频 | 久久久久久久亚洲精品 | 一区二区三区四区在线免费观看 | 国产香蕉97碰碰碰视频在线观看 | 欧美久久久久久久久中文字幕 | 日韩视频一区二区 | 91天天操| 国产理论一区二区三区 | 亚洲六月丁香色婷婷综合久久 | 在线亚洲播放 | 国产亚洲精品久久久网站好莱 | 精久久久久 | 91精品爽啪蜜夜国产在线播放 | 黄色软件在线观看视频 | 黄色精品视频 | 最新国产精品拍自在线播放 | 天堂激情网 | 国产视频一区二区三区在线 | 亚洲国产成人在线观看 | 99热这里只有精品久久 | 最新亚洲视频 | 极品美女被弄高潮视频网站 | 日韩精品中文字幕在线播放 | 成人黄色影片在线 | 国产一区二区高清 | 久久精品一二三区白丝高潮 | 亚洲国产精品小视频 | 美女中文字幕 | 日本免费久久高清视频 | 天天爱天天射天天干天天 | 国产美女免费视频 | 少妇性bbb搡bbb爽爽爽欧美 | 夜夜视频| 97在线观看免费观看高清 | 日韩免费专区 | 久久精品资源 | 亚洲欧美视频网站 | 在线观看亚洲视频 | 免费男女羞羞的视频网站中文字幕 | 婷婷国产视频 | 91天堂素人约啪 | 欧美a级在线播放 | 国产91精品一区二区麻豆网站 | 五月婷婷视频在线观看 | 日韩三级不卡 | 天天干天天插伊人网 | 免费观看性生交大片3 | 在线观看你懂的网站 | 亚洲成av人片在线观看www | 男女全黄一级一级高潮免费看 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久伊人五月天 | 国产精品美女久久久久久久 | 国产美女视频 | 国产精品久久久久一区 | 啪啪凸凸| 国产精华国产精品 | 波多野结依在线观看 | 国产精品国产三级国产aⅴ入口 | 免费在线成人av电影 | 免费碰碰 | 91丨porny丨九色| 一区二区三区在线免费播放 | 亚洲国产日韩精品 | 操操操干干干 | 免费看片黄色 | 激情影音先锋 | 国产一区二区午夜 | 精品美女久久久久 | 在线国产一区二区三区 | 粉嫩av一区二区三区四区五区 | 久久久久一区二区三区 | 国产在线观看高清视频 | 免费网址在线播放 | 天天摸夜夜添 | 草久草久 | 日韩精品中文字幕在线不卡尤物 | 国产美女免费视频 | 中文字幕色网站 | 天天爱天天操天天射 | 波多野结衣在线视频一区 | 久久精品视频中文字幕 | 成人小视频在线免费观看 | 日韩午夜在线 | 日韩av资源站 | 黄色一级在线免费观看 | 国产一二三区在线观看 | av在线播放网址 | 在线观看国产高清视频 | 国产在线观看免费观看 | 久久天天躁狠狠躁亚洲综合公司 | 香蕉免费| 高清av中文在线字幕观看1 | 韩国三级在线一区 | 久久66热这里只有精品 | 日本最新高清不卡中文字幕 | 在线观看视频99 | 国产精品成人一区二区三区吃奶 | 日韩精品视频一二三 | 久久久久电影网站 | 中文字幕黄色av | 99这里只有 | 一本一道久久a久久精品 | 国产黄影院色大全免费 | 丝袜一区在线 | 亚洲综合少妇 | 久久国产精品精品国产色婷婷 | 欧美一区二区视频97 | 992tv在线观看网站 | 国语精品久久 | 免费的成人av | 国产欧美综合在线观看 | 香蕉影院在线播放 | 亚洲日本欧美在线 | 亚洲国产网站 | 日本精品久久久久影院 | 欧美一级特黄高清视频 | 亚洲精品高清一区二区三区四区 | 5月丁香婷婷综合 | jizzjizzjizz亚洲| 欧美污在线观看 | 天天爱天天干天天爽 | 狠狠做深爱婷婷综合一区 | 国产午夜精品一区二区三区嫩草 | 六月丁香综合 | 少妇资源站 | 日日摸日日添夜夜爽97 | 国产美女精品视频 | 成人a免费 | 久久久综合 | 91麻豆精品国产自产在线游戏 | 五月婷婷欧美 | 免费在线播放av电影 | 日韩色av色资源 | 婷婷激情在线观看 | 日本精品免费看 | av一二三区| 免费色视频网站 | 国产视频观看 | 四虎伊人| 久久成人综合视频 | 精品一区二区免费在线观看 | 欧美韩国在线 | 天天干天天干天天色 | 欧美色伊人 | 天天操天天摸天天射 | 免费能看的黄色片 | 久久伊人色综合 | 啪啪资源 | 午夜精品久久久久久久99 | 五月婷婷综合激情 | 精品一区二区综合 | 日日干天天 | 欧美精品国产精品 | 日日爽夜夜爽 | 婷婷新五月 | 精品在线观看一区二区三区 | 中文字幕 欧美性 | 精品国产理论 | 91视频免费网站 | 91污在线| 精品一区二区三区久久 | 黄色av影视 | 精品国偷自产在线 | 亚洲免费av观看 | 911国产在线观看 | 精品国产精品久久一区免费式 | 国产精品欧美久久久久天天影视 | 久久精品福利 | 久久精品久久精品久久精品 | 97超碰在线资源 | 国产精品一区久久久久 | 最近免费中文视频 | 日韩网站在线 | 日女人电影| 亚洲高清视频在线播放 | 国产中文在线播放 | 国产精品爽爽久久久久久蜜臀 | 成人免费观看在线视频 | 国产成人综合精品 | 久久午夜免费视频 | 99爱在线观看 | 亚洲免费在线播放视频 | 黄色网在线播放 | 国产又粗又猛又色又黄视频 | 久草视频精品 | 91色综合| av在线等| 婷婷丁香在线观看 | 欧美做受xxx| 伊人影院av | 正在播放亚洲精品 | 97超碰在| 久草在线中文888 | 亚洲va天堂va欧美ⅴa在线 | 91九色视频在线观看 | 综合久久网站 | 欧洲精品一区二区 | 91av视频在线免费观看 | 中文乱幕日产无线码1区 | 91精品在线免费视频 | 一级片视频免费观看 | 国产美女免费观看 | 1000部国产精品成人观看 | 二区三区视频 | 精品国产一区二区三区四区在线观看 | 亚洲在线观看av | 亚洲最大色 | 免费在线观看av网站 | 中文字幕一区二区三区在线播放 | 久草免费在线 | 91亚洲精品国偷拍自产在线观看 | 国产高清不卡一区二区三区 | 国产精品久久久久久久久久久久午夜片 | 日韩极品视频在线观看 | 日韩在线欧美在线 | 婷婷六月综合亚洲 | 中文字幕在线播放一区二区 | 国产香蕉视频在线观看 | 久久久久免费电影 | 天天射天天搞 |