pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计
此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd
轉發本文并私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。后來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
上一節我們重點介紹了針對文本條件的統計方式,這次來把數值相關的講解一下,并且用一個 Excel 操作思維帶你理解 pandas 的運算邏輯。
繼續使用泰坦尼克號沉船事件的乘客名單作為例子:
- pclass:船艙等級
- survived:是否生還
- fare:票價
- sex:性別
- home.dest:住址
如果你看過上一節文章,想必應該理解到,在 pandas 中,不管是數值或是文本的條件統計,本質都是構造條件 bool 列,之后的處理是一樣的。
廢話少說,直接看各種復雜需求!
案例1:簡單需求
"30歲以上的人數"
先看看 Excel 函數公式的做法:
- 簡單使用 countifs 即可
- 注意,第二個參數使用文本(雙引號包圍),主要是因為需要使用 大于號。這使得函數公式的語義更好
pandas 中數值條件也很非常容易表達:
- 行1:df.age >30 構造出"年齡大于30"的 bool 列
與 Excel之間的關系
你會發現,其實 pandas 中的運算操作,與 Excel 函數公式的運算是非常相似(數組公式更相似),pandas 的操作就像你在第一行寫了一個處理邏輯公式,他就自動為你把邏輯公式復制一整列。
不知道我說啥?看看下面的 Excel 操作演示,來實現"30歲以上的人數":
代碼 df.age >30 相當于如下操作:
- pandas 代碼, df.age >30 ,構造出條件 bool 列,過程如上
- 在數據旁邊新增一列,直接執行 C2 單元格是否大于30,結果是一個 bool 值
- 由于 pandas 代碼是直接指定 年齡 列是否大于30,因此相當于自動把 E2 單元格的公式復制下去
此時,代碼 df[cond] ,相當于如下操作:
- df[cond] 相當于 df[df.age > 30]
- 相當于在輔助列上做篩選,把 true 值的行篩選出來!
- 所以你會發現,如果只是執行 df[cond] ,得到的是那些年齡大于30的行
如果你熟悉 Excel 的功能,你可能會說:"這不就是智能表格?!"
是的,智能表格更能體現,如下:
- 創建表格
- 在表格旁邊輸入公式
- 注意此時公式中的引用不是單元格地址,而是直接以列名顯示
- 這個地方與 pandas 非常相似,這是因為他們都是在表達,你在操作一個有結構的表格
當你按下回車,公式自動填充:
其他各種需求
當你理解了上面的思路,那么只要你熟悉 pandas 各種構造 bool 列的技巧,各種需求基本難不倒你。
"30歲以上 男女的人數":
一個個寫,太麻煩了,直接條件篩選,分組統計:
"男女高于各自性別的平均年齡的人數"
- 有沒有發現男性的人數與之前需求的人數很接近?因為剛好男性的平均年齡在30歲左右
當然,還是可以直接分組統計的:
"男女各自年齡最小的人的資料":
- 他們都在 S 港口上船,同是三等艙
- 女生獲救了,男生遇難了
"男女各自年齡最大的人的資料":
- 他們都是在 S 港口上船,同是一等艙
- 他們都獲救了
- 一等艙可能更靠近甲板,逃生更容易
最后來一個復雜一點的需求。
"看看各個年齡段,男女的生還情況":
- 簡單讓 pandas 按數據中的年齡,平均劃分成4段
- 大概可以看出,男性的生還率低于女性,特別是20到40歲這個年齡段
- 更多針對泰坦尼克號沉船事件數據的詳細分析,可以查看 公眾號中:數據大宇宙 > 數據分析 > 探索分析 系列文章
關于透視表和數據分段,請查看 pandas 專欄 [帶你玩轉Python數據處理—pandas] 相關文章
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dynamic 365 js 失去焦点_
- 下一篇: 小程序底部弹窗css_微信小程序之ani