當(dāng)我們遇到一個超大的csv數(shù)據(jù)文件的時候,雙擊打開是不現(xiàn)實(shí)的。即使打開csv,只能看到104萬行的數(shù)據(jù),后面都是隱藏的,所以打開也是沒有意義的。如果不打開,又無法查看到表的數(shù)據(jù)結(jié)構(gòu),就無法進(jìn)行下一步的工作,比如數(shù)據(jù)篩選。
一、大數(shù)據(jù)處理工具
對于超百萬行,甚至更大的數(shù)據(jù),我推薦以下幾種工具:
1、Python:pandas在升級為2.0版本之后,對csv處理速度更快了。以前被人詬病的慢有所改進(jìn),可以作為首選。
2、SQL或者Access,SQL可視化好,可以清楚地看到數(shù)據(jù)結(jié)構(gòu)與內(nèi)容,速度也非???,但需要簡單學(xué)習(xí)一下SQL語言。
3、power query,excel自帶工具,簡單快捷,不需要額外生產(chǎn)力。但用起來處理數(shù)據(jù)的感覺有些吃力,不如前兩個。
二、Python處理大數(shù)據(jù)技巧
1、讀取時不要輕易使用encoding參數(shù)
此參數(shù)對應(yīng)兩個常用值,gbk、utf-8,對應(yīng)下面截圖中兩種格式,如果格式不對會報錯誤。意思為:'gbk’編解碼器無法解碼位置2中的字節(jié)0xbf:非法的多字節(jié)序列。
如果是普通數(shù)據(jù)量較小的表格,可以直接調(diào)用參數(shù),如果表格很大,打不開的情況下,更別說改完格式另存為了,所以盡量先不填此參數(shù)(但一般默認(rèn)都是gbk)
2、異形表頭
在沒有打開表的情況下,我們無法得知表格是否為真正的二維表格,例如下面這種情況,讀取會報錯,意思是識別到第七行有21列。
因?yàn)楫?dāng)讀取到第四行和第五行的時候,會默認(rèn)只有一列表格,而到第7行的時候,卻又變成了21列,故pandas判斷這不是一個正常二維數(shù)據(jù)結(jié)構(gòu)。
為了避免此種情況。要利用讀取數(shù)據(jù)的參數(shù)delimiter=“\t”,這樣數(shù)據(jù)就被強(qiáng)制轉(zhuǎn)換成一列了,你就能看到你想要讀取的數(shù)據(jù)在第幾列了,再將此參數(shù)刪掉,再用參數(shù)header=2就可以搞定了。
data = pd.read_csv(r"C:\Users\ZWD\Desktop\測試\示例.csv",dtype_backend="pyarrow",``delimiter="\t")
綜上所述:完整代碼如下
``data = pd.read_csv(file,dtype_backend="pyarrow",header=2)``print(data.head(10))
三、內(nèi)存溢出
當(dāng)讀取特別大的表時,會提示內(nèi)存溢出的問題,csv格式較少遇到,xlsx格式可能較多,可以使用下面的方法進(jìn)行嘗試。
1. 分塊讀取文件
我們可以將文件分成多個塊,逐塊讀取,避免加載整個文件。例如:
chunksize = 100000``for df in pd.read_excel(filez,sheet_name=sheet,chunksize=chunksize)``# 對分塊進(jìn)行處理
2. 指定行數(shù)范圍讀取
可以只讀取文件的某些行,避免讀取不需要的行。例如:
df = pd.read_excel(file,sheet_name=sheet,skiprows=100000,nrows=100000)` `# 跳過前10萬行,讀取50萬行
3. 選擇需要的列讀取
通過usecols參數(shù)只選擇需要的列,避免讀取無用的數(shù)據(jù)列。
df = pd.read_excel(file,sheet_name=sheet,usecols=["col1","col2","col3"])``# 讀取想要阿列
題外話
感興趣的小伙伴,贈送全套Python學(xué)習(xí)資料,包含面試題、簡歷資料等具體看下方。
??CSDN大禮包??:全網(wǎng)最全《Python學(xué)習(xí)資料》免費(fèi)贈送??!(安全鏈接,放心點(diǎn)擊)文章來源:http://www.zghlxwxcb.cn/news/detail-839827.html
一、Python所有方向的學(xué)習(xí)路線
Python所有方向的技術(shù)點(diǎn)做的整理,形成各個領(lǐng)域的知識點(diǎn)匯總,它的用處就在于,你可以按照下面的知識點(diǎn)去找對應(yīng)的學(xué)習(xí)資源,保證自己學(xué)得較為全面。
二、Python必備開發(fā)工具
工具都幫大家整理好了,安裝就可直接上手!
三、最新Python學(xué)習(xí)筆記
當(dāng)我學(xué)到一定基礎(chǔ),有自己的理解能力的時候,會去閱讀一些前輩整理的書籍或者手寫的筆記資料,這些筆記詳細(xì)記載了他們對一些技術(shù)點(diǎn)的理解,這些理解是比較獨(dú)到,可以學(xué)到不一樣的思路。
四、Python視頻合集
觀看全面零基礎(chǔ)學(xué)習(xí)視頻,看視頻學(xué)習(xí)是最快捷也是最有效果的方式,跟著視頻中老師的思路,從基礎(chǔ)到深入,還是很容易入門的。
五、實(shí)戰(zhàn)案例
紙上得來終覺淺,要學(xué)會跟著視頻一起敲,要動手實(shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時候可以搞點(diǎn)實(shí)戰(zhàn)案例來學(xué)習(xí)。
六、面試寶典
簡歷模板
??CSDN大禮包??:全網(wǎng)最全《Python學(xué)習(xí)資料》免費(fèi)贈送??!(安全鏈接,放心點(diǎn)擊)
若有侵權(quán),請聯(lián)系刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-839827.html
到了這里,關(guān)于Python處理大數(shù)據(jù)——csv文件類型的小技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!