python做excel数据分析统计服_Python也能做到Excel那样,条件统计轻松解决工作需求...
此系列文章收錄在公眾號中:數據大宇宙 > 數據處理 >E-pd
轉發本文并私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)
經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。后來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas
前言
Excel 中除了 Vlookup 函數,一系列條件統計函數(sumif、countif、maxif)就用得最多,畢竟在 Excel 中進行數據統計是常見需求。
今天我們來看看在 pandas 中如何做到條件統計。
本文使用泰坦尼克號沉船事件的乘客名單作為例子:
pclass:船艙等級survived:是否生還fare:票價sex:性別home.dest:住址需求1:性別統計
"男女分別有多少人?"
這需要我們在Excel中有很多方式完成,比如透視表或函數公式,下面簡單列出函數公式的做法:
簡單使用 countifs 即可這里不再單獨使用 countif 了,管他是否只有一個條件,統一用 xxxifs 類函數即可
在pandas,不會有啥條件統計函數的,因為這就是先篩選,再統計:
行2:得到 性別 列是女性的 bool 列行3:df[cond] 就是女性的記錄,簡單通過 len 方法,即可得到記錄數(人數)不過你可能會覺得這很麻煩,因為如果還要男性的人數,也需要執行一次差不多的代碼。
實際上我們可以直接對性別列分組統計即可:
不多說了,代碼語義簡直與中文一樣這里唯一不好的地方是,需要通過 size 方法獲得每個分組的記錄數需求2:不同的統計方法
剛剛是求人數,現在希望求出女性的平均票價。
以下是Excel的公式做法:
那么 pandas 的做法呢?
想必聰明的你一定大概知道怎么做,pandas中求平均的是方法mean:
行3:同樣語義非常清晰。.fare.mean() 恰好反映"票價的平均"同樣,簡單分組即可一次獲得所有分組的統計信息:
按 sex 分組,求 票價 的 平均需求3:非常規匹配
上面的條件都是完全符合,有時候我們需要統計有包含關系的條件。
"住址是New York 的人數"
Excel的xxifs類函數公式都能支持通配符:
前后用 * 包圍內容,表示包含此內容即符合條件在pandas中,由于篩選與統計是獨立分開的,因此只需要知道怎么篩選,那么此需求即可迎刃而解:
行2:由于 住址 列是字符串類列,使用 .str 可訪問字符串類型列的各種方法contains 判斷列中是否包含指定內容。如果本身內容是 nan(不存在值) ,那么直接賦值為 False如果我們只需要 住址 結尾是 NY 的人數?
Excel中由于用通配符,因此表達更直接:
注意,沒有修改公式,只是輸入內容變成 *NY ,表示 NY 前面可以是任意內容在pandas這麻煩多了,這次不能使用contains方法:
行2:使用 endswith 方法即可完成怎么與 Excel 的統計結果不一樣!!
你會發現,Excel 的統計結果包含小寫字母的 ny 結尾!
一次解決所有問題
以上 pandas 的做法主要有以下問題:
不能用通配符表達不同的文本規則,只能用不同的方法,我記不住這么多方法呀不能忽略大小寫(實際上面的需求,pandas 的結果更合理)其實.str.contains方法本身就是使用正則表達式,我們可以直接用contains解決所有文本規則相關問題:
行2: NY$ ,表示 NY 在結尾處參數 case = False ,不區分大小寫pandas 用于文本匹配的還有 match 方法,此系列文章不再深入講解了。更多高級應用方法,請關注 pandas 專欄 [帶你玩轉Python數據處理—pandas]
總結
本文重點:
構造 bool 列,是核心知識點Series.str.contains 用于文本規則條件匹配
如果希望從零開始學習 pandas ,那么可以看看我的 pandas 專欄。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python做excel数据分析统计服_Python也能做到Excel那样,条件统计轻松解决工作需求...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能选go还是python_深圳人工
- 下一篇: python编写统计选票的程序_使用py