groupby時間的年 Pandas 七 時間資料

2021-10-13 17:22:03 字數 2447 閱讀 8931

前言

pandas是python的乙個資料分析庫,提供如dataframe等十分容易操作的資料結構,是近年做資料分析時不可或缺的工具之一。

但是pandas知識點繁多,同乙個操作可以用多種不同的方法實現,再加上網上滿坑滿谷的教學資料,質量參差不齊,導致很多初學者常常看完後不知所云,且很快就忘掉了。本系列正是從這點出發,將60個常用的pandas知識點由淺入深地分成4大類別:pandas基礎理論、三類操作(分組、變形、合併)、四類資料(缺失資料、文字資料、分類資料、時序資料)、綜合例子(帶你再次完整走一遍前面所有操作)。保證你看完後足以應付日常90%的情景。

廢話不多說啦,讓我們開始這趟pandas旅程吧!

文末放上**

時間資料是我們經常碰到的一類時間,相比python的datetime模組,pandas的時間資料型別更加豐富,搭配series、dataframe使用更加方便。

pandas一共有四類時間資料:

date times:和python datetime package下的datetime object類似,包含日期和時間

time deltas:和python datetime package下的timedelta object類似。絕對時間差

date offsets:相對時間差。當不包含時區的時候,和timedelta一樣

time spans:代表一段時間範圍

to_datetime:一次性建立乙個

data_range:一次性建立多個

date_range的freq引數選項:

timedelta絕對時間差,指無論是冬令時還是夏令時,增減1day都只計算24小時。有些地方施行夏令時、冬令時,一天不是24小時。dataoffset相對時間差,指無論一天是232425小時,增減1day都與當天相同的時間保持一致。

例如,英國當地時間 2023年03月29日,01:00:00 時鐘向前調整 1 小時 變為 2023年03月29日,02:00:00,開始夏令時

代表一段時間,兩種建立方法。第一行**代表20121月1日這一天,是乙個時間段。第二行代表12個月,12個時間段。

時間資料的索引和其他資料型別的索引是一樣的。只是時間資料會做更多優化,對於你傳進來的字串,它會盡可能轉化成時間。所以下面幾種索引方式都是可行的。

還可以通過屬性的方式,獲取當前日期的年、月、星期、天等資訊

所謂重取樣,就是指resample函式,它可以看做時序版本的groupby函式。大家可以參考我之前關於groupby的文章:

視窗函式也是類似於groupby,只不過groupby是根據條件進行聚合,視窗函式是根據劃定的視窗大小,對在這個視窗範圍內的資料進行聚合。都需要配合聚合函式才能計算結果。count/sum/mean/median/min/max/std/var/skew/kurt/quantile/cov/corr都是常用的聚合函式。

使用rolling函式,window代表視窗大小,若資料量小於這個數,就會被置為nan。可以通過min_periods來修改置為nan的閾值

基於時間的rolling

expanding函式等價與rolling(window=len(s),min_periods=1)

cumsum/cumprod/cummax/cummin是特殊expanding累計計算方法

**位址

參考

python for data analysiswes mckinney著

pandas cookbooktheodore petrou著

XP系統的Python3 4 4安裝pandas

要使用tushare庫,但這個庫需要其他庫的支援,如lxml和pandas 前幾個庫還好,pandas在pip的時候總是出現紅字報錯,歸結原因差不多是說你當前的系統 目前安裝的python版本和pip下來的這個pandas安裝包不相容。首先切換目錄 cd c python34 scriptspyth...

詭異的Group by函式

select 表2.name,count id 管理員from 表2 where 表2.name in select name from 表1 group by 表2.name 使用上面這個語句sql通常會報錯 訊息 8120,級別 16,狀態 1,第 1 行 列 表2.管理員 在選擇列表中無效,因...

group by 方法的使用

有時候,你也許需要將乙個陣列中的元素根據某種規則進行分組。那麼group by方法就是很好的選擇。先來看下面的例子 a 1.20 to a 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 a.group by 0,1,2,3,4 1,5,6,7,...