此系列文章收錄在公衆號中:數據大宇宙 > 數據處理 > E-pd
轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
numpy.where 方法
Excel 函數中有一個初學者都能馬上學會的函數——IF 函數,而在 pandas 中卻沒有對應效果的方法,這是因爲 numpy 已經有了對應的實現—— where。
他能根據條件(true 或者 false) 返回不同的值。由于需要使用 numpy 的方法,因此代碼的開始需要導入 numpy 包:
1import pandas as pd2import numpy as np
場景
如下學生成績表:
- 高于等于60分算合格,C列打上"是",否則打上"否"
- 典型的根據條件選擇某個值的需求
怎麽解決
如此簡單的需求,Excel 中一個 IF 函數輕松解決:
- IF 函數第一參數是條件,第二參數是當第一條件爲 true 時的返回,第三參數是當第一條件爲 false 時的返回
在使用 numpy.where 方法時的邏輯與上述 Excel 的 IF 函數一致:
1df = pd.read_excel('data.xlsx', 'sp1')2df['res'] = np.where(df.成績>=60,'是','否')3df
- 行2:np.where 各個參數都能接受 pandas 的列(Series)
更多關于 numpy.where 高級應用,請看專欄:
性能優越
如果你看過本系列文章會發現,怎麽當初入門 Python 的時候,學習的各種處理列表、字典的技巧全都用不上了。甚至 if、for 循環都很少用到了。
在 pandas 中其實也可以選擇用 Python 的基本語法處理。
比如上面的例子,我們可以用 apply:
1df = pd.read_excel('data.xlsx', 'sp1')23def ap_where(x):4 if x >= 60:5 return '是'6 return '否'78df['res'] = df.成績.apply(ap_where)9df
- 但是,上述代碼的執行性能與直接使用 numpy 或 pandas 內置方法,會差上幾十上百倍
總結
本文重點:
- numpy.where 函數的使用方式與 Excel 的 IF 函數一致
頭條需要源碼的小夥伴請轉發本文並私信我"python"
如果希望從零開始學習 pandas ,那麽可以看看我的 pandas 專欄。