高效的5個pandas函數,你都用過嗎?

2021-01-11 小老鼠Python

文章來源:towardsdatascience作者:Soner Yldrm

看標題是否似曾相似?之前為大家介紹過10個高效的pandas函數,頗受歡迎,裡面的每一個函數都能幫我們在數據分析過程中節省時間。

高效的10個Pandas函數,你都用過嗎?

pandas還有很多讓人舒適的用法,這次再為大家介紹5個pandas函數,作為這個系列的第二篇。

1. explode

explode用於將一行數據展開成多行。比如說dataframe中某一行其中一個元素包含多個同類型的數據,若想要展開成多行進行分析,這時候explode就派上用場,而且只需一行代碼,非常節省時間。

用法:

DataFrame.explode(self, column: Union[str, Tuple])

參數作用:

column :str或tuple以下表中第三行、第二列為例,展開[2,3,8]:

# 先創建表id = ['a','b','c']measurement = [4,6,[2,3,8]]day = [1,1,1]df1 = pd.DataFrame({'id':id, 'measurement':measurement, 'day':day})df1

使用explode輕鬆將[2,3,8]轉換成多行,且行內其他元素保持不變。

df1.explode('measurement').reset_index(drop=True)

2. Nunique

Nunique用於計算行或列上唯一值的數量,即去重後計數。這個函數在分類問題中非常實用,當不知道某欄位中有多少類元素時,Nunique能快速生成結果。

用法:

Series.nunique(dropna=True)# 或者DataFrame.nunique(axis=0, dropna=True)

參數作用:

axis:int型,0代表行,1代表列,默認0;dropna:bool類型,默認為True,計數中不包括NaN;先創建一個df:

values_1 = np.random.randint(10, size=10)values_2 = np.random.randint(10, size=10)years = np.arange(2010,2020)groups = ['A','A','B','A','B','B','C','A','C','C']df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2})df

對year列進行唯一值計數:

df.year.nunique()

輸出:10 對整個dataframe的每一個欄位進行唯一值計數:

df.nunique()

3. infer_objects

infer_objects用於將object類型列推斷為更合適的數據類型。

用法:

# 直接將df或者series推斷為合適的數據類型DataFrame.infer_objects()

pandas支持多種數據類型,其中之一是object類型。object類型包括字符串和混合值(數字及非數字)。

object類型比較寬泛,如果可以確定為具體數據類型,則不建議用object。

df = pd.DataFrame({"A": ["a", 1, 2, 3]})df = df.iloc[1:]df

df.dtypes

使用infer_objects方法將object推斷為int類型:

df.infer_objects().dtypes

4. memory_usage

memory_usage用於計算dataframe每一列的字節存儲大小,這對於大數據表非常有用。

用法:

DataFrame.memory_usage(index=True, deep=False)

參數解釋:index:指定是否返回df中索引字節大小,默認為True,返回的第一行即是索引的內存使用情況;deep:如果為True,則通過查詢object類型進行系統級內存消耗來深入地檢查數據,並將其包括在返回值中。

首先創建一個df,共2列,1000000行。

df_large = pd.DataFrame({'A': np.random.randn(1000000),'B': np.random.randint(100, size=1000000)})df_large.shape

返回每一列的佔用字節大小:

df_large.memory_usage()

第一行是索引index的內存情況,其餘是各列的內存情況。

5. replace

顧名思義,replace是用來替換df中的值,賦以新的值。

用法:

DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

參數解釋:

to_replace:被替換的值value:替換後的值inplace:是否要改變原數據,False是不改變,True是改變,默認是Falselimit:控制填充次數regex:是否使用正則,False是不使用,True是使用,默認是Falsemethod:填充方式,pad,ffill,bfill分別是向前、向前、向後填充創建一個df:

values_1 = np.random.randint(10, size=10)values_2 = np.random.randint(10, size=10)years = np.arange(2010,2020)groups = ['A','A','B','A','B','B','C','A','C','C']df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2})df

將A全部替換為D:

df.replace('A','D')

將B替換為E,C替換為F:

df.replace({'B':'E','C':'F'})

相關焦點

  • pandas指南:做更高效的數據科學家
    skiprows=[2,5]表示在讀取文件時將刪除第2行和第5行最常用的函數:read_csv, read_excel還有一些很不錯的函數:read_clipboard、read_sql2、寫入數據index=None將簡單地按原樣寫入數據。如果你不寫index=None,會得到額外的行。
  • 20個Pandas函數詳解
    它提供了許多函數和方法來加快數據分析過程。pandas之所以如此普遍,是因為它具有強大的功能,以及他簡單的語法和靈活性。在這篇文章中,我將舉例來解釋20個常用的pandas函數。有些是很常見的,我敢肯定你以前用過。有些對你來說可能是新的。所有函數都將為你的數據分析過程增加價值。
  • 圖解四個實用的pandas函數!
    作者:Baijayanta Roy來源:towardsdatascience編譯&內容補充:早起Python在用python進行機器學習或者日常的數據處理中,pandas是最常用的Python庫之一,熟練掌握pandas是每一個數據科學家的必備技能,本文將用代碼+圖片詳解Pandas中的四個實用函數!
  • 用Pandas演示tips的小技巧,學到了嗎?
    無論是學生、數據科學家還是博士研究人員,這些技巧都一定能幫到你。下載Jupyter notebook,一起動動小手來試試吧!設置創建一個10行3列的數據幀,數值隨機。df_html =df.to_html()with open('analysis.html', 'w') as f:f.write(df_html)read_html函數甚至可以將HTML解析為pandas數據幀。筆者還沒有使用過通用HTML進行嘗試,但無疑會很有用。
  • 想成為高效數據科學家?不會Pandas怎麼行
    要想成為一名高效的數據科學家,不會 Pandas 怎麼行?Python 是開源的,它很棒,但是也無法避免開源的一些固有問題:很多包都在做(或者在嘗試做)同樣的事情。如果你是 Python 新手,那麼你很難知道某個特定任務的最佳包是哪個,你需要有經驗的人告訴你。有一個用於數據科學的包絕對是必需的,它就是 pandas。
  • 加速數據分析,這12種高效Numpy和Pandas函數為你保駕護航
    二者在日常的數據分析中都發揮著重要作用,如果沒有 Numpy 和 Pandas 的支持,數據分析將變得異常困難。但有時我們需要加快數據分析的速度,有什麼辦法可以幫助到我們嗎?在本文中,數據和分析工程師 Kunal Dhariwal 為我們介紹了 12 種 Numpy 和 Pandas 函數,這些高效的函數會令數據分析更為容易、便捷。
  • pandas使用的25個技巧
    查詢pandas版本  如果你還想知道pandas所依賴的模塊的版本,你可以使用show_versions()函數:  上述三個函數的結果都一樣,可以更改列名使得列名中不含有空格:行序反轉並重置索引你可以看到,行序已經反轉,索引也被重置為默認的整數序號。5.
  • 5種高效利用value-counts函數的方法,一鍵提升數據挖掘姿勢水平
    Pandas 庫為此提供了許多有用的函數,value_counts 就是其中之一。此函數返回 pandas 數據框中各個項的數量。但在使用 value-counts 函數的大多數時候用到的是默認參數。因此,在這篇短文中,作者介紹了如何通過自定義參數來實現更多的功能。
  • 想讓pandas運行更快嗎?那就用Modin吧
    「通過更改一行代碼擴展你的 pandas 工作流。」Pandas 是數據科學領域的工作者都熟知的程序庫。它提供高性能、易於使用的數據結構和數據分析工具。但是,當處理過於龐大的數據時,單個內核上運行的 Pandas 就會變得力不從心,人們不得不求助於不同的分布式系統來提高性能。然而,為了提高性能而做的這種權衡會帶來陡峭的學習曲線。
  • 超全的pandas數據分析常用函數總結(下篇)
    上篇文章中,小編給大家總結了數據分析中pandas這一模塊裡面常用函數的四個部分的內容,分別為導入模塊、創建數據集並讀取、數據查看與數據清洗,現在給大家介紹下篇的內容。來源 | 凹凸數據5.合併data.append(data2) # 在原數據集的下方合併入新的數據集輸出結果:用join合併用下面這種方式會報錯:列重疊,且沒有指定後綴,因為上面的數據data和data2都有「id」列,所以需要給id列指明後綴。
  • python時間序列分析之_用pandas中的rolling函數計算時間窗口數據
    簡介由於系統編輯器限制,代碼行用無序列表表示。因此,引出滑動窗口(移動窗口)的概念,簡單點說,為了提升數據的可靠性,將某個點的取值擴大到包含這個點的一段區間,用區間來進行判斷,這個區間就是窗口。如下面的示意圖所示,其中時間序列數據代表的是15日每日的溫度,現在我們以3天為一個窗口,將這個窗口從左至右依次滑動,統計出3天的平均值作為這個點的值,比如3號的溫度就是1號、2號、3號的平均溫度,通過示意圖我們已經理解了滑動窗口,下面我們就看看pandas中使用的函數及各參數的含義。
  • 6個提升效率的pandas小技巧
    pandas是python中常用的數據分析庫,出現頻率非常高,而且pandas功能之多讓人咋舌,即使pandas老手也沒法保證能高效使用pandas做數據分析。這篇文章目的梳理幾個高效實用的pandas小技巧,供大家參考。1.
  • 如何用Pandas庫實現MySQL資料庫的讀寫?
    可以使用pip命令安裝SQLAlchemy模塊:  '資料庫類型+資料庫驅動名稱://用戶名:口令@機器地址:埠號/資料庫名'  Pandas讀寫MySQL資料庫  我們需要以下三個庫來實現Pandas讀寫MySQL資料庫:  pandas  sqlalchemy
  • 懶人秘籍:教你如何避免編寫pandas代碼
    而大家都在儘可能地避免這種懸崖峭壁,結果可想而知,都轉向了如何避免編寫pandas代碼。在過去4年裡,筆者一直使用pandas作為數據分析的主要工具。必須承認,「如何避免編寫pandas代碼」的大部分內容來自於使用pandas編程的起步階段。在進行代碼審閱時,筆者仍然看到許多經驗豐富的程式設計師在看一些熱門「如何避免使用」的帖子。
  • Pandas的函數應用及映射方法
    CDA數據分析師 出品在數據分析師日常的數據清洗工作中,經常需要對數據進行各種映射變換,通過Pandas可以非常方便地解決此問題,其提供了map()、apply()、mapapply()等方法,下面將一一詳細介紹這三個映射函數的用法及三者的區別。
  • 如何用pandas更快地進行數據可視化?
    作者:劉早起來源:早起Python(公眾號)如果你經常使用Python進行數據分析,那麼對於pandas一定不會陌生,但是Pandas除了在數據處理上大放異彩,隨著版本的不斷更新,Pandas的繪圖功能在某些情況下甚至要比matplotlib更加適用,本文就將介紹如何用
  • 使用Pandas的resample函數處理時間序列數據的技巧
    在本文中,我們將介紹一些使用Pandas resample()函數對時間序列數據進行重採樣的示例。 我們將介紹以下常見問題,並應幫助您開始使用時序數據操作。下採樣並執行聚合使用自定義基數進行下採樣上採樣和填充值一個實際的例子向下採樣和執行聚合下採樣是將一個時間序列數據集重新採樣到一個更大的時間框架。例如,從幾分鐘到幾小時,從幾天到幾年。
  • 如何通過一頓飯來說明NumPy與pandas的功用
    上圖展示了NumPy、pandas(以及matplotlib)的歷史總共下載量等信息。可以看出,兩者總共有過近80萬的下載量,如果按照市場價值計量,兩者合計價值近1500萬美元,但它們都可以免費使用。縱然NumPy與pandas風靡於數據分析任務,人們對其的不足也多有指出,其中最主要的便是由於Python自身的動態語言特性而帶來的運行速度方面的損失,其次便是Python在大數據處理方面(數G甚至幾十上百G)的捉襟見肘。對於前者,NumPy已經做了相當程度的優化,可以對大數組的數據進行高效處理。
  • 從小白到大師,這裡有一份Pandas入門指南
    這是一篇最佳實踐教程,既適合用過 Pandas 的讀者,也適合沒用過但想要上手的小白。通過本文,你將有望發現一到多種用 pandas 編碼的新方法。本文包括以下內容:Pandas 發展現狀;內存優化;索引;方法鏈;隨機提示。在閱讀本文時,我建議你閱讀每個你不了解的函數的文檔字符串(docstrings)。
  • PANDAS: 新手教程 一
    1.使用read_csv或read_excel讀取數據任何數據分析的起點都是獲取數據集。pandas提供不同的函數來讀取不同格式的數據。最常用的是read_csv( )這允許你讀取CSV文件。# 從數據幀中選擇前5(n=5)條記錄titanic_data.head(5)tail( )這給了我們數據幀末尾的「n」條記錄。# 從數據幀中選擇最後5條(n=5)條記錄titanitc_data.tail(5)sample( )這將從數據中隨機獲取「n」個記錄。注意-此命令在不同運行時的輸出可能不同。