乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       LibraryPKU 2019-06-27

      先簡單的了解下日期和時間數(shù)據(jù)類型及工具

      python標準庫包含于日期(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標準庫函數(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ù)

      from dateutil.parser import parse
      parse('2017-6-27')
          datetime.datetime(2017, 6, 27, 0, 0)
      parse('27/6/2017',dayfirst =True)
          datetime.datetime(2017, 6, 27, 0, 0)

      3)pandas處理成組日期

      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

      0 1
      2017-06-01 0 1
      2017-06-02 4 5
      2017-06-03 8 9

      總結(jié)

      該篇博客主要內(nèi)容:

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

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

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

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多