Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

2020 年 1 月 18 日 外星人玩Python

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

此系列文章收錄在公衆號中:數據大宇宙 > 數據處理 > 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

場景

如下學生成績表:

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

  • 高于等于60分算合格,C列打上"是",否則打上"否"
  • 典型的根據條件選擇某個值的需求

怎麽解決

如此簡單的需求,Excel 中一個 IF 函數輕松解決:

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

  • IF 函數第一參數是條件,第二參數是當第一條件爲 true 時的返回,第三參數是當第一條件爲 false 時的返回

在使用 numpy.where 方法時的邏輯與上述 Excel 的 IF 函數一致:

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

1df = pd.read_excel('data.xlsx', 'sp1')2df['res'] = np.where(df.成績>=60,'是','否')3df
  • 行2:np.where 各個參數都能接受 pandas 的列(Series)

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

更多關于 numpy.where 高級應用,請看專欄:


性能優越

如果你看過本系列文章會發現,怎麽當初入門 Python 的時候,學習的各種處理列表、字典的技巧全都用不上了。甚至 if、for 循環都很少用到了。

在 pandas 中其實也可以選擇用 Python 的基本語法處理。

比如上面的例子,我們可以用 apply:

懂Excel輕松入門Python數據分析包pandas(二十七):IF函數代替者

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 專欄。

相關文章:

  • 最新!剛剛,珠海十所優秀中學學區房價曝光.excel
  • 東南亞,新加坡曆史、政治、經濟學之正文(二十七)
  • 送你100新幣去學商業數據分析課程, 還有工作內推哦
  • 數據方案超市:Excel調用Python優雅的方式——xlwings
  • 微軟 Office 三合一 APP 上線,可以告別全家桶了
  • 李顯龍總理2018年國慶致辭,祝新加坡53歲生日快樂
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們