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

Pandas處理大數(shù)據(jù)的一些小技巧

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

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

[[184335]]

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

大文本數(shù)據(jù)的讀寫

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

to_csv, to_excel的選擇

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

讀入時(shí)處理日期列

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

關(guān)于to_datetime函數(shù)再多說幾句,我們拿到的時(shí)期格式常常出現(xiàn)一些亂七八糟的怪?jǐn)?shù)據(jù),遇到這些數(shù)據(jù)to_datimetime函數(shù)默認(rèn)會(huì)報(bào)錯(cuò),其實(shí),這些數(shù)據(jù)是可以忽略的,只需要在函數(shù)中將errors參數(shù)設(shè)置為'ignore'就可以了。

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

把一些數(shù)值編碼轉(zhuǎn)化為文字

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

其實(shí)我們有更簡(jiǎn)單的方法,對(duì)要修改的列傳入一個(gè)dict,就會(huì)達(dá)到同樣的效果。

通過shift函數(shù)求用戶的相鄰兩次登錄記錄的時(shí)間差

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

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

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

那么為什么說pandas的shift函數(shù)適合這個(gè)計(jì)算呢?來看一下shift函數(shù)的作用

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

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

責(zé)任編輯:張燕妮 來源: Cloga的互聯(lián)網(wǎng)筆記
相關(guān)推薦

2016-05-13 17:24:00

java大數(shù)據(jù)

2022-12-30 15:29:35

數(shù)據(jù)分析工具Pandas

2015-08-27 11:16:14

ios開發(fā)技巧

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桌面應(yīng)用

2009-04-29 23:04:44

破解還原卡還原精靈

2021-06-18 07:35:46

Java接口應(yīng)用

2021-11-11 15:24:24

手機(jī)電池充電

2020-05-22 13:32:24

可視化詞云圖數(shù)據(jù)

2010-05-18 10:47:52

2022-11-17 11:52:35

pandasPySpark大數(shù)據(jù)

2023-03-24 16:41:36

Pandas技巧數(shù)據(jù)處理

2010-05-26 17:40:14

MySQL數(shù)據(jù)庫

2023-09-25 13:19:41

pandasPython

2023-11-29 13:56:00

數(shù)據(jù)技巧

2018-02-08 09:37:27

Pandas大數(shù)據(jù)Spark

2013-03-29 09:49:06

Android開發(fā)小功能實(shí)現(xiàn)

2024-05-20 09:31:53

PandasPython大數(shù)據(jù)集
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费国产视频在线观看 | 一区二区三区精品视频 | 一区二区三区日韩精品 | 国产福利观看 | 免费看a | 天天爽天天操 | 成人在线视频免费观看 | 精品一区二区三区免费视频 | 久久成人一区 | 国产一区免费视频 | 精品国产乱码久久久久久丨区2区 | 欧美日韩亚洲一区 | 成人影院在线观看 | 91免费观看在线 | 午夜视频在线 | 国产高清视频一区 | 一区二区电影网 | 99免费在线视频 | 成人在线小视频 | 国产精品日韩一区 | 国产美女一区二区 | 久久男人 | 欧美1页| 日韩91 | 夜夜艹天天干 | 午夜精品久久 | 欧美一区二区三区在线观看视频 | 欧美日韩国产一区二区 | 精品人伦一区二区三区蜜桃网站 | 欧美片网站免费 | 一区二区亚洲 | 日屁网站 | 久久亚洲一区 | 日韩av成人在线观看 | 一区二区三区不卡视频 | 欧美人妖网站 | 免费久久99精品国产婷婷六月 | 国产高清免费视频 | 性精品 | av黄色片在线观看 | 视频一区二区中文字幕 |