簡體   English   中英

熊貓read_csv-使用usecols選項運行無法讀取

[英]Pandas read_csv - running with usecols option fails to read

我正在嘗試使用panda包讀取大的tsv文件。 tsv是從zip文件中提取的,該文件單獨包含標頭名稱。 它不是我寫的-我是從外部來源獲得的文件(這是點擊流數據)。 我在亞馬遜虛擬實例上通過jupyter筆記本運行此程序。

我的代碼如下:

df = pd.read_csv(zf.open(item[:-4]), 
   compression = None, 
   sep = '\t',
   parse_dates = True,
   names = df_headers,
   usecols = columns_to_include,
   error_bad_lines = False)

df_headers是在spearate tsv上提供的680個字段。 我的問題是,我收到數百種類型的錯誤:

跳線158548:預計680場,鋸865

跳線181906:預計680場,鋸865

跳過線306190:預期680場,鋸689跳過線306191:預期680場,鋸686

跳線469427:預計680場,鋸1191

跳線604104:預計680場,鋸865

然后操作停止,並進行以下回溯

引發ValueError('skip_footer不支持迭代')

然后:pandas.parser.TextReader.read中的pandas / parser.pyx(pandas / parser.c:7988)()

pandas.parser.TextReader._read_low_memory中的pandas / parser.pyx(pandas / parser.c:8244)()

pandas.parser.TextReader._read_rows中的pandas / parser.pyx(pandas / parser.c:9261)()

pandas.parser.TextReader._convert_column_data中的pandas / parser.pyx(pandas / parser.c:10190)()

CParserError:指定的列過多:預期為680,發現為489

這不是我以這種方式讀取的第一個文件-我讀取了很多文件,通常收到少於10個此類錯誤,我可以忽略並讀取這些文件。 我不知道為什么這次有問題的行數如此之大,為什么讀取停止。 我該如何進行? 我什至無法打開tsv,因為它們很大,當我嘗試一種應該可以打開大文件的工具時-我找不到錯誤的行,因為行號沒有類似於錯誤中報告的錯誤...(即我不能只去158548行,看看那里出了什么問題...)任何幫助將不勝感激! 這對我來說至關重要。

編輯:當我運行不帶usecols選項的read_csv時(我只在大文件的一個子集上嘗試過)-成功。 由於某種原因,usecols導致pandas識別實際列時遇到了一些問題...我將pandas版本更新為0.19.2,因為我看到有關usecols選項的一些錯誤修復,但現在我遇到了一個更嚴重的問題-當我在文件的一個子集上運行讀取時(使用nrows =),無論是否使用usecols,我都會得到不同的結果:使用usecols時,我得到以下錯誤:

CParserError:標記數據時出錯。 C錯誤:捕獲了緩沖區溢出-可能是格式錯誤的輸入文件。

現在我什至不知道在哪一行...

如果我在不使用usecols的情況下運行它,那么我將設法讀取BUT-我設法僅對一部分數據進行處理(約700000行中的200000行)-當我每次嘗試讀取200000行,然后追加創建的數據幀時我收到內存問題錯誤.....

usecols列的數量大約為100,而總列的數量幾乎為700。我有幾十個這樣的文件,每個文件大約有700000行。

回答特定情況:當您在沒有標題的情況下在熊貓中加載數據幀(帶有通過/失敗事件的標記數據幀等)時,該文件包含大量列,並且有一些空列,因此在運行過程中會出現問題流程(錯誤:指定的列過多...)

對於這種情況/目的,請嘗試使用:

df = pd.read_csv('file.csv', header=None, low_memory=False)

low_memory允許您按順序甚至用完整的空列加載所有這些數據。

筆記:

  • 考慮將熊貓作為鈀進口

  • 考慮文件在jupyter筆記本的同一目錄中

  • 具有16GB RAM內存+ i5 vPro 2核的筆記本電腦

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM