最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【干貨】將33G數(shù)據(jù)集轉(zhuǎn)為3G,這個(gè)案例值得學(xué)習(xí)

2023-03-16 09:24 作者:啥都會一點(diǎn)的研究生  | 我要投稿

幾年前在StackOverflow上看到的一個(gè)問題,現(xiàn)在找不到了,當(dāng)時(shí)記錄了一點(diǎn)在草稿箱中

是個(gè)很好的學(xué)習(xí)案例,對于需要注意的地方也會進(jìn)行提示

當(dāng)加載數(shù)據(jù)集變大時(shí),我們的系統(tǒng)可能會卡頓崩掉,這個(gè)案例是將33G數(shù)據(jù)壓縮到了3.7G

依賴庫

pandas是常用的數(shù)據(jù)分析庫之一,用于數(shù)據(jù)處理等

垃圾收集器 (GC) ,在處理大量數(shù)據(jù)時(shí)從內(nèi)存中釋放空間,從內(nèi)存中刪除不需要的東西

glob 庫使用系統(tǒng)中的模式提取特定文件

os 庫與操作系統(tǒng)交互并處理文件及其路徑

分塊(chunk)

這里不能像處理小規(guī)模數(shù)據(jù)那樣直接加載數(shù)據(jù)文件,會導(dǎo)致崩潰

可以使用“chunksize”拆分文件,此處為每個(gè)塊選擇50萬行,可根據(jù)每個(gè)人任務(wù)&機(jī)器性能來定

這里‘gc.collect()’的使用非常巧妙且至關(guān)重要,可以避免內(nèi)存錯(cuò)誤

運(yùn)行后得到若干個(gè)chunk

然后查看是否可以讀取chunk并檢查信息

從打印輸出可以看出,190列中有185列是float64類型,這也是pandas 總是將 float 數(shù)據(jù)加載為 float64 的常見問題之一

通過優(yōu)化該部分,可以減少數(shù)據(jù)集中的一部分內(nèi)存

所以將其轉(zhuǎn)換為‘float16’或‘float32’以最小化內(nèi)存使用,這里將其轉(zhuǎn)換為“float16”

敲黑板了,請搞清楚你數(shù)據(jù)集這樣轉(zhuǎn)換是否會丟失數(shù)據(jù)精度?。?!

可以看到轉(zhuǎn)換為“float16”后,內(nèi)存使用量大大減少

優(yōu)化和拼接chunk文件

之前讀取并優(yōu)化了單個(gè)chunk文件,現(xiàn)在將拼接所有 23 個(gè)chunk文件并優(yōu)化內(nèi)存

使用‘glob’和‘os’ 方法訪問到相應(yīng)的文件,即(“*.csv”)

然后通過迭代讀取所有文件,在迭代過程中將其從‘float64’轉(zhuǎn)換為‘float16’并保存在列表中

緊接著將所有文件拼接保存在一個(gè)新的dataframe中

在dataframe中可以快速進(jìn)行數(shù)據(jù)處理

將dataframe轉(zhuǎn)換成文件格式

優(yōu)化后的dataframe可以轉(zhuǎn)換成任何文件格式

推薦feather,因?yàn)檩^為輕量,如下所示

讀取優(yōu)化后的文件

再次讀取優(yōu)化后的feather格式文件就不會出現(xiàn)任何內(nèi)存錯(cuò)誤

可以正常進(jìn)行數(shù)據(jù)處理操作

OK,完事,開擺

【干貨】將33G數(shù)據(jù)集轉(zhuǎn)為3G,這個(gè)案例值得學(xué)習(xí)的評論 (共 條)

分享到微博請遵守國家法律
柳林县| 仁寿县| 瑞丽市| 井冈山市| 阿尔山市| 巴东县| 布拖县| 任丘市| 沧州市| 济宁市| 化州市| 尉氏县| 南岸区| 贡嘎县| 宁蒗| 遵化市| 元氏县| 灌云县| 托克托县| 汝城县| 嘉祥县| 措勤县| 邻水| 涡阳县| 青冈县| 客服| 两当县| 鹤壁市| 葵青区| 凤冈县| 厦门市| 乌海市| 黄冈市| 女性| 肇庆市| 抚顺县| 垫江县| 三门县| 孟州市| 黄冈市| 五原县|