python 模組化 處理大檔案 tsv csv

2022-08-09 05:51:07 字數 1617 閱讀 9283

男朋友又讓我給他處理資料,其中乙個資料大小有10g以上,我還需要把這個資料和其他資料進行匹配,然後分組統計得到一些資料。

之前簡簡單單用一下read_csv不能開啟這麼大的資料,我在尋找辦法。

因為要做匹配,所以我本來打算模組化把資料寫進來之後,然後再合併起來做。但是總是不行,報錯。最後可能要先分組處理完,再合併。因為這個資料裡應該有很多不用的資料,還是有希望。

中間看到有人說可以用dask包處理很大的檔案,很輕鬆。我看了一下,我覺得就算我讀入了,我後面很難操作,我還沒到能很快學會乙個新包的程度。我還是先好好把pandas用好吧。哭了。

想和男朋友討論一下,怎麼弄這個事,他說他不管過程,只要結果。我就是想和他說一說,然後把自己的思路梳理清楚,他都不聽。他說他老師和他交代這些事,也從來不管過程,給他結果就好了。

怎麼這樣,我一直覺得我和他的學術地位是平行的,我們是合作關係,現在他都騎到我頭上了。缺罵。

tsv檔案其實就是用tab做分隔符的檔案

uspatentcitation=pd.read_csv('f:/1/uspatentcitation.tsv', sep='\t', nrows=2,usecols=['patent_id', 'citation_id', 'date'])

和csv唯一的區別就是sep引數

nrows=2 #就是開啟前兩行看一下,我想知道這個資料裡有什麼指標,是否有一些指標不需要。
usecols=['patent_id', 'citation_id', 'date']  #只取其中三列看看

參考:

我已經試了一些方法,都不能開啟這個大檔案,我決定先看一眼這個檔案有多少行。對後面模組化處理檔案心裡有個數。

with open('f:/1/uspatentcitation.tsv', 'rb') as f:

print(len(f.readlines()))

『rb』是因為之前用『r』出現以下編碼錯誤:「unicodedecodeerror: 'gbk' codec can't decode byte 0xb2 in position 6311: illegal multibyte sequence」

但是沒想到這個資料這麼頑劣,想看看有多少行都不行,給我報『memoryerror』

煩死人。

換了個辦法,沒想到看看有多少行,也得模組。

path1 = 'f:/1/uspatentcitation.tsv'

file1 = open(path1)

uspatentcitation = pd.read_csv(path1, sep='\t',usecols=['patent_id', 'citation_id', 'date'], iterator=true)

count = 0

loop = true

while loop:

try:

user = uspatentcitation.get_chunk(100000)

count += user.shape[0]

except stopiteration:

break

print(count)

結果:108913836 

一億條資料,無語。

不幹了,明天再說吧。

vuex的拆分使用 模組化處理

隨著專案越來越大,vuex中的內容也會越來越多,此時,將所有的store單一的存在乙個js檔案裡面,在維護和使用的時候都不太方便。這個時候,需要將store拆分開,使用state getters mutations actions單獨管理。1.建立目錄 在src目錄下建立store資料夾和六個js檔...

Python 大檔案處理

非記憶體資源可以使用with 在python中逐行讀取大檔案 在我們日常工作中,難免會有處理日誌檔案的時候,當檔案小的時候,基本不用當心什麼,直接用file.read 或readlines 就可以了,但是如果是將乙個10g大小的日誌檔案讀取,即檔案大於記憶體的大小,這麼處理就有問題了,會將整個檔案載...

Python 大檔案處理

非記憶體資源可以使用with 在我們日常工作中,難免會有處理日誌檔案的時候,當檔案小的時候,基本不用當心什麼,直接用file.read 或readlines 就可以了,但是如果是將乙個10g大小的日誌檔案讀取,即檔案大於記憶體的大小,這麼處理就有問題了,會將整個檔案載入到記憶體中從而造成memory...