這是一個關於 pandas 從基礎到進階的練習題系列,來源於 github 上的 guipsamora/pandas_exercises 。這個專案從基礎到進階,可以檢驗你有多麼瞭解 pandas。
我會挑選一些題目,並且
提供比原題庫更多的解決方法以及更詳盡的解析
。
計劃每天更新一期,希望各位小夥伴先自行思考,再檢視答案。如果對你有幫助,記得轉發推薦給你的好友!
上期文章:
pandas每天一題-題目16:條件賦值的多種方式
更多 pandas 高階應用教程,請訂閱我的 pandas 專欄:
後臺回覆"資料",可以下載本題資料集
如下資料:
import pandas as pdimport numpy as npdf = pd。read_csv(‘chipotle。tsv’, sep=‘\t’, converters={‘item_price’: lambda x: float(x[1:-1])})
資料描述:
此資料是訂單明細表。一個訂單會包含很多明細項,表中每個樣本(每一行)表示一個明細項
order_id 列存在重複
item_name 是明細項物品名稱
quantity 是明細項數量
item_price 是該明細項的總價錢
choice_description 是每一項更詳盡的描述
例如: 某個單子中,客人要 1瓶可樂 和 1瓶雪碧 ,那麼這個訂單的 order_id 為:'xx',有2個行記錄(樣本),2行的item_name 都是 "Canned Soda"(蘇打水,視為罐裝飲料) ,quantity 都是1。
第一行的 choice_description 是 "Diet Coke"(可樂) ,第二行是 "Sprite"(雪碧)
前面章節講解過的知識點,本文不再講解!
需求:對資料中的缺失值做合適處理
下面是答案了
哪些列有缺失?
之前的文章已經有講解過:
df。apply( lambda col: col。isna()。sum(), axis=0)
只有 choice_description 列有缺失
不同的填充方式
最簡單的方式,把 nan 都填充一個固定的值:
df[‘choice_description’]。fillna(‘無’)
顯然,這只是返回填充後的列,因此我們把新值賦值回去:
df[‘choice_description’] = df[‘choice_description’]。fillna(‘無’)df
除此之外,還可以使用空值上一行或下一行的值來填充:
df = pd。read_csv(‘chipotle。tsv’, sep=‘\t’, converters={‘item_price’: lambda x: float(x[1:-1])})df[‘choice_description’]。fillna(method=‘ffill’)
行4:引數 method 可以是 ‘ffill’ 前向參考,‘bfill’ 後向參考。
這裡使用前向參考,因此第一行記錄前面沒有記錄可參考,無法填充。第4行記錄使用第3行的值填充
顯然,直接前向或後向填充,通常沒有意義。
篇幅關係,我把分組填充缺失值放到下一節
推薦閱讀:
懂Excel就能輕鬆入門Python資料分析包pandas(五):重複值處理
20行程式碼教會Python分析商品評價
Python動態互動系列(01),不用改程式碼,點點按鈕就可以完成
Python玩資料入門必備系列(7):最會匹配的集合,字典