成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Pandas處理大數據的一些小技巧

大數據
近期的工作和Hive SQL打交道比較多,偶爾遇到一些SQL不好解決的問題,會將文件下載下來用pandas來處理,由于數據量比較大,因此有一些相關的經驗可以和大家分享

近期的工作和Hive SQL打交道比較多,偶爾遇到一些SQL不好解決的問題,會將文件下載下來用pandas來處理,由于數據量比較大,因此有一些相關的經驗可以和大家分享

[[184335]]

近期的工作和Hive SQL打交道比較多,偶爾遇到一些SQL不好解決的問題,會將文件下載下來用pandas來處理,由于數據量比較大,因此有一些相關的經驗可以和大家分享。

大文本數據的讀寫

有時候我們會拿到一些很大的文本文件,完整讀入內存,讀入的過程會很慢,甚至可能無法讀入內存,或者可以讀入內存,但是沒法進行進一步的計算,這個時候如果我們不是要進行很復雜的運算,可以使用read_csv提供的chunksize或者iterator參數,來部分讀入文件,處理完之后再通過to_csv的mode='a',將每部分結果逐步寫入文件。

to_csv, to_excel的選擇

在輸出結果時統稱會遇到輸出格式的選擇,平時大家用的最多的.csv, .xls, .xlsx,后兩者一個是excel2003,一個是excel2007,我的經驗是csv>xls>xlsx,大文件輸出csv比輸出excel要快的多,xls只支持60000+條記錄,xlsx雖然支持記錄變多了,但是,如果內容有中文常常會出現詭異的內容丟失。因此,如果數量較小可以選擇xls,而數量較大則建議輸出到csv,xlsx還是有數量限制,而且大數據量的話,會讓你覺得python都死掉了

讀入時處理日期列

我之前都是在數據讀入后通過to_datetime函數再去處理日期列,如果數據量較大這又是一個浪費時間的過程,其實在讀入數據時,可以通過parse_dates參數來直接指定解析為日期的列。它有幾種參數,TRUE的時候會將index解析為日期格式,將列名作為list傳入則將每一個列都解析為日期格式

關于to_datetime函數再多說幾句,我們拿到的時期格式常常出現一些亂七八糟的怪數據,遇到這些數據to_datimetime函數默認會報錯,其實,這些數據是可以忽略的,只需要在函數中將errors參數設置為'ignore'就可以了。

另外,to_datetime就像函數名字顯示的,返回的是一個時間戳,有時我們只需要日期部分,我們可以在日期列上做這個修改,datetime_col = datetime_col.apply(lambda x: x.date()),用map函數也是一樣的datetime_col = datetime_col.map(lambda x: x.date())

把一些數值編碼轉化為文字

前面提到了map方法,我就又想到了一個小技巧,我們拿到的一些數據往往是通過數字編碼的,比如我們有gender這一列,其中0代表男,1代表女。當然我們可以用索引的方式來完成

其實我們有更簡單的方法,對要修改的列傳入一個dict,就會達到同樣的效果。

通過shift函數求用戶的相鄰兩次登錄記錄的時間差

之前有個項目需要計算用戶相鄰兩次登錄記錄的時間差,咋看起來其實這個需求很簡單,但是數據量大起來的話,就不是一個簡單的任務,拆解開來做的話,需要兩個步驟,***步將登錄數據按照用戶分組,再計算每個用戶兩次登錄之間的時間間隔。數據的格式很單純,如下所示

如果數據量不大的,可以先unique uid,再每次計算一個用戶的兩次登錄間隔,類似這樣

這種方法雖然計算邏輯比較清晰易懂,但是缺點也非常明顯,計算量巨大,相當與有多少量記錄就要計算多少次。

那么為什么說pandas的shift函數適合這個計算呢?來看一下shift函數的作用

剛好把值向下錯位了一位,是不是恰好是我們需要的。讓我們用shift函數來改造一下上面的代碼。

上面的代碼就把pandas向量化計算的優勢發揮出來了,規避掉了計算過程中最耗費時間的按uid循環。如果我們的uid都是一個只要排序后用shift(1)就可以取到所有前一次登錄的時間,不過真實的登錄數據中有很多的不用的uid,因此再將uid也shift一下命名為uid0,保留uid和uid0匹配的記錄就可以了。

責任編輯:張燕妮 來源: Cloga的互聯網筆記
相關推薦

2016-05-13 17:24:00

java大數據

2022-12-30 15:29:35

數據分析工具Pandas

2015-08-27 11:16:14

ios開發技巧

2011-03-31 14:16:54

Cacti技巧

2013-04-09 11:26:55

WindowsPhon

2020-11-25 07:43:07

Java

2021-12-25 15:30:03

GNOME桌面應用

2009-04-29 23:04:44

破解還原卡還原精靈

2021-06-18 07:35:46

Java接口應用

2021-11-11 15:24:24

手機電池充電

2020-05-22 13:32:24

可視化詞云圖數據

2010-05-18 10:47:52

2022-11-17 11:52:35

pandasPySpark大數據

2023-03-24 16:41:36

Pandas技巧數據處理

2010-05-26 17:40:14

MySQL數據庫

2023-09-25 13:19:41

pandasPython

2023-11-29 13:56:00

數據技巧

2018-02-08 09:37:27

Pandas大數據Spark

2013-03-29 09:49:06

Android開發小功能實現

2024-05-20 09:31:53

PandasPython大數據集
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区三区久久久 | 国产精品成人av | 日韩高清中文字幕 | 欧美成人第一页 | 亚洲成人免费视频在线 | 久久久久久国产精品 | 九九亚洲 | 国产精品久久二区 | 亚洲一区二区视频在线播放 | 美女视频h| 香蕉超碰 | 色频| 日本久久久久久久久 | 精品国产一区二区三区久久 | 成人午夜黄色 | 成人免费看黄网站在线观看 | 在线不卡视频 | 亚洲精品电影 | 日韩三片| 久久久久久国产 | 综合久久综合久久 | 成人黄色在线 | 日韩在线高清 | 精品在线免费观看视频 | 欧美在线亚洲 | 国产伦精品一区二区三区精品视频 | 免费观看毛片 | 精品国产一区探花在线观看 | www.男人天堂.com | 婷婷丁香激情 | av手机免费在线观看 | 四虎永久免费黄色影片 | 色网站在线 | 成人在线欧美 | 在线观看免费av网 | www312aⅴ欧美在线看 | 国内自拍偷拍视频 | 精品91视频 | 午夜黄色影院 | 国产乱码高清区二区三区在线 | 午夜免费网 |