最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python+pandas生成指定日期和重采樣的方法

 更新時間:2018年04月11日 10:11:23   作者:LY_ysys629  
下面小編就為大家分享一篇python+pandas生成指定日期和重采樣的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python 日期的范圍、頻率、重采樣以及頻率轉換

pandas有一整套的標準時間序列頻率以及用于重采樣、頻率推斷、生成固定頻率日期范圍的工具。

生成指定日期范圍的范圍

pandas.date_range()用于生成指定長度的DatatimeIndex:

1)默認情況下,date_range會按著時間間隔為天的方式生成從給定開始到結束時間的時間戳數組;

2)如果只指定開始或結束時間,還需要periods標定時間長度。

import pandas as pd
pd.date_range('2017-6-20','2017-6-27')
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='D')
pd.date_range('2017-6-20 12:59:30','2017-6-27')
DatetimeIndex(['2017-06-20 12:59:30', '2017-06-21 12:59:30',
   '2017-06-22 12:59:30', '2017-06-23 12:59:30',
   '2017-06-24 12:59:30', '2017-06-25 12:59:30',
   '2017-06-26 12:59:30'],
   dtype='datetime64[ns]', freq='D')
pd.date_range('2017-6-20 12:59:30',periods = 8)
DatetimeIndex(['2017-06-20 12:59:30', '2017-06-21 12:59:30',
   '2017-06-22 12:59:30', '2017-06-23 12:59:30',
   '2017-06-24 12:59:30', '2017-06-25 12:59:30',
   '2017-06-26 12:59:30', '2017-06-27 12:59:30'],
   dtype='datetime64[ns]', freq='D')
pd.date_range('2017-6-20 12:59:30',periods = 8, normalize = True)
 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='D')

頻率和日期偏移量

pandas中的頻率是由一個基礎頻率(M、H)也可以是(Hour、Minute、h、min等)

pd.date_range('2017-6-27',periods = 7,freq = '1h30min')
DatetimeIndex(['2017-06-27 00:00:00', '2017-06-27 01:30:00',
   '2017-06-27 03:00:00', '2017-06-27 04:30:00',
   '2017-06-27 06:00:00', '2017-06-27 07:30:00',
   '2017-06-27 09:00:00'],
   dtype='datetime64[ns]', freq='90T')
pd.date_range('2017-6-27',periods = 7,freq = 'M')
DatetimeIndex(['2017-06-30', '2017-07-31', '2017-08-31', '2017-09-30',
   '2017-10-31', '2017-11-30', '2017-12-31'],
   dtype='datetime64[ns]', freq='M')
pd.date_range('2017-6-27',periods = 7,freq = 'd')
 DatetimeIndex(['2017-06-27', '2017-06-28', '2017-06-29', '2017-06-30',
   '2017-07-01', '2017-07-02', '2017-07-03'],
   dtype='datetime64[ns]', freq='D')
pd.date_range('2017-6-27',periods = 7,freq = 'H')
 DatetimeIndex(['2017-06-27 00:00:00', '2017-06-27 01:00:00',
   '2017-06-27 02:00:00', '2017-06-27 03:00:00',
   '2017-06-27 04:00:00', '2017-06-27 05:00:00',
   '2017-06-27 06:00:00'],
   dtype='datetime64[ns]', freq='H')

常用的基礎頻率

別名 偏移量 說明
D/d Day 每日歷日
B BusinessDay 每工作日
H/h Hour 每小時
T或min Minute 每分
S Secend 每秒
L或ms Milli 每毫秒(每千分之一秒)
U Micro 每微秒(即百萬分之一秒)
M MonthEnd 每月最后一個日歷日
BM BusinessDayEnd 每月最后一個工作

上表只展示了部分!

WOM日期(可獲得例如“每月第3個星期五”)

pd.date_range('2017-06-01','2017-07-31',freq='WOM-3FRI')
DatetimeIndex(['2017-06-16', '2017-07-21'], dtype='datetime64[ns]', freq='WOM-3FRI')

重采樣及頻率轉換

降采樣:高頻數據到低頻數據

升采樣:低頻數據到高頻數據

主要函數:resample()(pandas對象都會有這個方法)

resample方法的參數

參數 說明
freq 表示重采樣頻率,例如‘M'、‘5min',Second(15)
how='mean' 用于產生聚合值的函數名或數組函數,例如‘mean'、‘ohlc'、np.max等,默認是‘mean',其他常用的值由:‘first'、‘last'、‘median'、‘max'、‘min'
axis=0 默認是縱軸,橫軸設置axis=1
fill_method = None 升采樣時如何插值,比如‘ffill'、‘bfill'等
closed = ‘right' 在降采樣時,各時間段的哪一段是閉合的,‘right'或‘left',默認‘right'
label= ‘right' 在降采樣時,如何設置聚合值的標簽,例如,9:30-9:35會被標記成9:30還是9:35,默認9:35
loffset = None 面元標簽的時間校正值,比如‘-1s'或Second(-1)用于將聚合標簽調早1秒
limit=None 在向前或向后填充時,允許填充的最大時期數
kind = None 聚合到時期(‘period')或時間戳(‘timestamp'),默認聚合到時間序列的索引類型
convention = None 當重采樣時期時,將低頻率轉換到高頻率所采用的約定(start或end)。默認‘end'

降采樣

需考慮:

1)各區(qū)間哪邊是閉合的(參數:closed)

2)如何標記各聚合面元,用區(qū)間的開頭還是末尾(參數:label)

ts_index = pd.date_range('2017-06-20',periods =12,freq = '1min')#一分鐘采樣數據
ts = pd.Series(np.arange(12),index = ts_index)
ts
 2017-06-20 00:00:00 0
 2017-06-20 00:01:00 1
 2017-06-20 00:02:00 2
 2017-06-20 00:03:00 3
 2017-06-20 00:04:00 4
 2017-06-20 00:05:00 5
 2017-06-20 00:06:00 6
 2017-06-20 00:07:00 7
 2017-06-20 00:08:00 8
 2017-06-20 00:09:00 9
 2017-06-20 00:10:00 10
 2017-06-20 00:11:00 11
 Freq: T, dtype: int32

聚合到5分鐘

ts.resample('5min',how='sum')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecated
 the new syntax is .resample(...).sum()
 if __name__ == '__main__':
 2017-06-20 00:00:00 10
 2017-06-20 00:05:00 35
 2017-06-20 00:10:00 21
 Freq: 5T, dtype: int32
ts.resample('5min',how='sum',closed='left')
C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecated
 the new syntax is .resample(...).sum()
 if __name__ == '__main__':
 2017-06-20 00:00:00 10
 2017-06-20 00:05:00 35
 2017-06-20 00:10:00 21
 Freq: 5T, dtype: int32
ts.resample('5min',how='sum',closed='left',label ='left')
 C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: how in .resample() is deprecated
 the new syntax is .resample(...).sum()
 if __name__ == '__main__':
 2017-06-20 00:00:00 10
 2017-06-20 00:05:00 35
 2017-06-20 00:10:00 21
 Freq: 5T, dtype: int32

通過groupby進行重插樣

另外一種降采樣方法

ts1_index = pd.date_range('2017-6-01',periods = 100,freq = 'd')
ts1 = pd.Series(np.arange(100),index = ts1_index)
ts1.head()
2017-06-01 0
 2017-06-02 1
 2017-06-03 2
 2017-06-04 3
 2017-06-05 4
 Freq: D, dtype: int32
ts1.groupby(lambda x:x.month).mean()
 6 14.5
 7 45.0
 8 76.0
 9 95.5
 dtype: float64
ts1.groupby(lambda x:x.weekday).mean()
 
 0 49.5
 1 50.5
 2 51.5
 3 49.0
 4 50.0
 5 47.5
 6 48.5
 dtype: float64
df1 = pd.DataFrame(np.arange(200).reshape(100,2),index = ts1_index)
df1.groupby(lambda x:x.weekday).mean()

0 1
0 99 100
1 101 102
2 103 104
3 98 99
4 100 101
5 95 96
6 97 98

對于具有時間序列索引的pandas數據結構,當groupby傳入一個函數時,可以對時間索引對應列進行聚合

升采樣

升采樣沒有聚合,但是需要填充

df2 = pd.DataFrame(np.arange(200).reshape(100,2),index = ts1_index,columns=['add1','add2'])
df2.head()

add1 add2
2017-06-01 0 1
2017-06-02 2 3
2017-06-03 4 5
2017-06-04 6 7
2017-06-05 8 9

df2.resample('W-THU',fill_method = 'ffill')
 C:\Program Files\anaconda\lib\site-packages\ipykernel\__main__.py:1: FutureWarning: fill_method is deprecated to .resample()
 the new syntax is .resample(...).ffill()
 if __name__ == '__main__':

add1 add2
2017-06-01 0 1
2017-06-08 14 15
2017-06-15 28 29
2017-06-22 42 43
2017-06-29 56 57
2017-07-06 70 71
2017-07-13 84 85
2017-07-20 98 99
2017-07-27 112 113
2017-08-03 126 127
2017-08-10 140 141
2017-08-17 154 155
2017-08-24 168 169
2017-08-31 182 183
2017-09-07 196 197
2017-09-14 198 199

總結

本篇博客主要內容:

1)生成指定時間段,指定頻率的日期

2)對含有時間索引的pandas數據進行重采樣,包括降采樣和升采樣等。

相關文章

  • 關于Python如何安裝requests庫

    關于Python如何安裝requests庫

    這篇文章主要介紹了關于Python如何安裝requests庫,requests庫自稱“HTTP for Humans”,直譯過來的意思是專門為人類設計的HTTP庫,能夠被開發(fā)人員安全地使用,需要的朋友可以參考下
    2023-04-04
  • ptyhon實現sitemap生成示例

    ptyhon實現sitemap生成示例

    這篇文章主要介紹了ptyhon實現sitemap生成示例,需要的朋友可以參考下
    2014-03-03
  • python之列表推導式的用法

    python之列表推導式的用法

    這篇文章主要介紹了python之列表推導式的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • OpenCV基于ORB算法實現角點檢測

    OpenCV基于ORB算法實現角點檢測

    這篇文章主要為大家詳細介紹了OpenCV基于ORB算法實現角點檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Python實現刪除列表首元素的多種方式總結

    Python實現刪除列表首元素的多種方式總結

    在Python中,處理列表的操作是日常開發(fā)中不可避免的任務之一,其中,刪除列表中的元素是一個常見的需求,本文為大家整理了Python中刪除列表中的第一個元素的多種方法,需要的可以參考下
    2023-12-12
  • python的列表生成式,生成器和generator對象你了解嗎

    python的列表生成式,生成器和generator對象你了解嗎

    這篇文章主要為大家詳細介紹了python的列表生成式,生成器和generator對象,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python+random模塊實現隨機抽樣

    Python+random模塊實現隨機抽樣

    python的random庫,提供了很多隨機抽樣方法。本文將通過幾個示例為大家詳細講講random模塊實現隨機抽樣的方法,需要的可以參考一下
    2022-09-09
  • Python使用5行代碼批量做小姐姐的素描圖

    Python使用5行代碼批量做小姐姐的素描圖

    本文主要介紹了Python使用5行代碼批量做小姐姐的素描圖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python timeit模塊的使用實踐

    Python timeit模塊的使用實踐

    timeit 模塊是 Python 標準庫中的模塊,無需安裝,直接導入就可以使用。這篇文章主要介紹了Python timeit模塊的使用,需要的朋友可以參考下
    2020-01-01
  • Python使用kombu連接信息中包含#號問題排查方式

    Python使用kombu連接信息中包含#號問題排查方式

    文章描述了在部署Python項目到生產環(huán)境時遇到的一個錯誤,即端口號無法正確轉換為整數值,該錯誤在測試環(huán)境和本地調試中沒有出現,但在生產環(huán)境中才出現,通過分析錯誤信息和代碼,作者發(fā)現問題出在URL解析過程中,特別是在處理包含特殊字符(如#號)的URL時
    2024-12-12

最新評論

钟山县| 湄潭县| 张家界市| 汉源县| 延安市| 长沙市| 兰西县| 金塔县| 泗阳县| 永昌县| 无为县| 会理县| 崇仁县| 绵阳市| 岗巴县| 太湖县| 连江县| 康乐县| 雅安市| 亚东县| 象州县| 白朗县| 隆子县| 桑日县| 贵州省| 镇雄县| 洪雅县| 东乡县| 五河县| 七台河市| 赤峰市| 辽宁省| 伊宁市| 南皮县| 苏尼特左旗| 黄冈市| 汶上县| 全椒县| 景泰县| 志丹县| 阜城县|