原创 pandas性能百倍提升之用字典索引或ndarray替換DataFrame索引以及內存佔用分析

       在利用pandas進行數據分析時,DataFrame是其基本的數據結構,當數據量較小時還好,一旦數據量較大,比如幾十萬上百萬時,這時DataFrame就會變得笨重,笨重主要體現在對其索引的操作上,而對DataFrame的索引

原创 python: import和from對模塊導入的工作原理和區別

目錄   import和from的等價關係 import的工作原理 from進行引用複製 搜索路徑順序和相對導入 模塊命名空間的更新原則 import和from的等價關係        python中,import和from都可以導入模塊

原创 pandas分組聚合運算groupby之agg,apply,transform

      目錄 一、agg和transform 二、agg和apply 三、其他注意點        groupby函數是pandas中用以分組的函數,可以通過指定列來進行分組,並返回一個GroupBy對象。對於GroupBy對象的聚合

原创 python多進程編程pool之利用traceback模塊對子進程進行debug

      一般情況下,我們只有當一個腳本在單進程的情況下測試通過後,纔會利用多進程對其進行加速,這樣避免了在多進程的情況下代碼觸發異常;但是我們總是無法保證腳本不會出現預期之外的bug,所以有時候在多進程中出現了bug,對其有效的deb

原创 利用pandas的isin函數提取兩個結構化數據文件的異同

       在進行數據分析時,有時候我們需要對比兩份數據是否一致,如果不一致,提取不一致的數據記錄;對於結構化的數據來說,我們可以利用pandas的DataFrame數據結構來實現這一點。        我們先將結構化數據文件讀入成Da

原创 pandas給DataFrame新增列並賦值

       給DataFrame新增列的話,除了join,merge,concat這些函數之外,還可以通過簡單的df['new_column']=values的形式對其新增列,但是在使用這種方式新增列時,需要注意索引問題以及新增多列時該

原创 python包導入的知識點

目錄 包導入的搜索路徑 __init__文件的作用 包內相對導入 包導入的搜索路徑        包導入的搜索路徑和python模塊導入的搜索路徑和順序完全一樣,具體可以參看筆者的這篇文章。但是要注意的是,這裏的搜索路徑指的是對最外層的那

原创 numpy:性能提升之利用numpy的apply_along_axis函數替代pandas的apply函數

       pandas的DataFrame的apply函數可以實現對指定的軸進行遍歷操作,這是個很方便也很常用的函數,但是問題在於,當我們的數據量較大,比如有50萬行,這時要對50萬行進行逐行遍歷的話,如果對每行的操作用到了Serie

原创 python:如何準確的獲取一個對象(比如字典)的內存佔用

       python中,sys模塊裏面有一個getsizeof函數,其可以獲取某個對象的內存佔用,但是要注意的是,該函數只能獲取對象本身直接佔用的內存,該對象所指向的引用所佔據的內存並不會被計算在內;python中,比如當對象是一個

原创 pandas之apply和for loop之間的比較和權衡

       首先,文章開頭就需要強調的是:對於大的數據量,能不用loop就儘量不用loop,無論是for loop還是apply,儘量用內置函數實現。        在pandas裏,我們經常聽到一句話就是儘量減少for loop的時候

原创 pandas、matplotlib作圖之設置座標軸標籤、標題和圖例標籤的字體大小

import matplotlib.pyplot as plt fig,ax=plt.subplots(1,1,figsize=(9,6)) ax.set_ylabel(fontsize=20) #設置y軸標籤字體大小 ax.set

原创 numpy數據類型轉換Memory Error解決辦法之給元素構建數字映射

       當我們用numpy處理數據時,由於numpy的內存管理機制,其要求所有的元素的內存size一致,這樣很多時候就會存在一個問題:一旦數據中出現了一個佔據字節數很大的元素,那麼所有的元素都會同樣的佔據該內存大小,儘管其他的元素並

原创 Python星號表達式(*)用法詳解

    目錄 一、作爲函數的可變參數標誌以及參數解包 二、賦值語句中作爲可變變量標誌 三、在除函數參數語境外的其他語境下對可迭代對象進行解包        星號在python中的用法主要可分爲三類:一是作爲函數的可變參數標誌以及在函數參數

原创 程序設計原則(一)

       一個程序是爲了實現某種或者某些功能而存在的,往往一個功能又可以分爲多個部分或多個步驟,分步或分塊去實現,對於這樣的功能,我們最好在程序編寫之前進行流程和結構的梳理,明晰程序的功能特點,對功能進行合理拆分和設計,這樣設計出來的

原创 Python: 多線程還是多進程?

       併發編程一般來說,主要有兩個目的:程序對併發效果的需求和提高程序運行效率。本文所講的內容是針對提高程序運行效率這個話題的,因此對於多線程還是多進程的選擇,後面將圍繞如何提高程序運行效率展開。 目錄 一、任務的執行時間拆分 二