Pandas 自動(dòng)優(yōu)化操作_第1頁
Pandas 自動(dòng)優(yōu)化操作_第2頁
Pandas 自動(dòng)優(yōu)化操作_第3頁
Pandas 自動(dòng)優(yōu)化操作_第4頁
Pandas 自動(dòng)優(yōu)化操作_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、平日工作里經(jīng)常會(huì)聽到周邊小伙伴說:我X,內(nèi)存又爆了!對于這樣的話我聽了不下百遍。正因?yàn)槿绱耍谫Y源有限的情況下,我們都是變著法的減少內(nèi)存占用,一些常用的方法如:gc.collect和del回收使用csv的替代品,如 HYPERLINK /s?_biz=MzUzODYwMDAzNA=&mid=2247543807&idx=1&sn=9977c51c32af6118c765a0adf20905a3&chksm=fad75cf2cda0d5e4584e23f931e12d0292db6eb34e5e1aaaaaf4a31dfc6099ab294b9340e079&token=2078782947&l

2、ang=zh_CN&scene=21 l wechat_redirect feather、Parquet優(yōu)化代碼, HYPERLINK /s?_biz=MzUzODYwMDAzNA=&mid=2247517636&idx=2&sn=4225c9dcbd9604453620be5bbe6b76f8&chksm=fad7f2c9cda07bdf4b759ec1ac0e0c168538fc570c1c687679ffd1b54bfb850f2b8e0d4cd371&token=2078782947&lang=zh_CN&scene=21 l wechat_redirect 盡量使用Numpy矩陣代替

3、for循環(huán)和apply.本次再分享一個(gè)騷操作,就是通過改變數(shù)據(jù)類型來壓縮內(nèi)存空間,可以延伸到所有數(shù)據(jù)類型。正常情況下,pandas會(huì)給數(shù)據(jù)列自動(dòng)設(shè)置默認(rèn)的數(shù)據(jù)類型,其中最令人討厭并且最消耗內(nèi)存的數(shù)據(jù)類型就是object(O),這也恰好限制了 pandas的一些功能。下面是 pandas、Python、Numpy的數(shù)據(jù)類型列表,對比你就發(fā)現(xiàn)pandas的數(shù)據(jù)類型是有很大優(yōu)化空間的。Pandas dtypePython typeNumPy typeUsageobjectstrstring_,unicodeTextint64intint,int8,intl6,int32,int64,uint8,ui

4、nt16,uint32,uint64Integer numbersfloat64floatfloat,float16,float32,float64Floating point numbersboolboolbool_True/False valuesdatetime64NAdatetime64nsDate and time valuestimedeltansNANADifferences between two datetimescategoryNANAFinite list of text values來源:http : /pandas_dtypes.html很多默認(rèn)的數(shù)據(jù)類型占用很多內(nèi)存

5、空間,其實(shí)根據(jù)沒有必要,我們完全可以壓縮到可能小的子類型。Data typeDescriptionbool_Boolean(True or False) stored as a byteint_Default integer type(same as C 1ong ; normally either int64or int32)intcldentical to C int(normally int32 or int64)intpInteger used for indexing(same as C ssize_t; normally either int32 or int64)int8Byte

6、(-128 to 127)int16Integer(-32768 to 32767)int32Integer(-2147483648 to 2147483647)int64Integer(-9223372036854775808 to 9223372036854775807)uint8Unsigned integer(0 to 255)uint16Unsigned integer(0 to 65535)uint32Unsigned integer(0 to 4294967295)uint64Unsigned integer(0 to 18446744073709551615)float_Sho

7、rthand for float64.float16Half precision float: sign bit,5 bits exponent,10 bits mantissafloat32Single precision float: sign bit,8 bits exponent,23 bits mantissafloat64Double precision float: sign bit,11 bits exponent,52 bits mantissacomplex_Shorthand for plex64Complex number, represented by two 32-

8、bit floats(real and imaginary components)complex128Complex number, represented by two 64-bit floats(real and imaginary components)來源:https : /doc/numpy-1.13.0/user/basics.types.html上面是scipy文檔中列出的所有數(shù)據(jù)類型,從簡單到復(fù)雜。我們希望將類型簡單化,以此節(jié)省內(nèi)存,比如將浮點(diǎn)數(shù)轉(zhuǎn)換為float16/32,或者將具有正整數(shù)和負(fù)整數(shù)的列轉(zhuǎn)為int8/16/32,還可以將布爾值轉(zhuǎn)換為uint8,甚至僅使用正整數(shù)來進(jìn)

9、一步減少內(nèi)存消耗?;谏厦嫠f的變量類型簡化的思考,寫出一個(gè)自動(dòng)轉(zhuǎn)化的函數(shù),它可以根據(jù)上表將浮點(diǎn)數(shù)和整數(shù)轉(zhuǎn)換為它們的最小子類型:defreduce_memory_usage(df,verbose=True):numerics=int8,int16,int32,int64,float16,float32,float64start_mem=df.memory_usage().sum()/1024*2forcolindf.columns:col_type=dfcol.dtypesifcol_typeinnumerics:c_min=dfcol.min()c_max=dfcol.max()ifstr(col_type):3=int:ifc_minnp.iinfo(8).minandc_maxnp.iinfo(16).minandc_maxnp.iinfo(32).minandc_maxnp.iinfo(64).minandc_maxnp.finfo(np.float16).minandc_maxnp.finfo(np.float32).minandc_maxreduce_memory_usage(tps_october)Mem.usagedecreasedto509.26Mb(76.9%reduction)數(shù)據(jù)集的內(nèi)存占用從原來的 2.2GB壓縮到 510MB。不要小看這個(gè)壓縮

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論