總結了pandas提取數據的15種方法,統(tǒng)統(tǒng)只需1行代碼,真香!

pandas是python數據分析必備工具,它有強大的數據清洗能力,往往能用非常少的代碼實現(xiàn)較復雜的數據處理
今天,鳥哥總結了pandas篩選數據的15個常用技巧,主要包括5個知識點:
1.比較運算:==、<、>、>=、<=、!=2.范圍運算:between(left,right)3.字符篩選:str.contains(pattern或字符串,na=False)4.邏輯運算:&(與)、|(或)、not(取反)5.比較函數:eq, ne, le, lt, ge, gt(相當于==,=!,<=,<,>=,>)6.apply和isin函數
下面以超市運營數據為例,給大家逐個講解
首先讀取數據:
import?pandas?as?pd
data=pd.read_excel('超市運營數據模板.xlsx')
data

先看一下各列的數據類型:
data.dtypes
商品ID int64
類別ID int64
門店編號 object
單價 float64
銷量 float64
訂單ID object
日期 datetime64[ns]
時間 object
dtype: object
下面以實際應用場景為例開始講解:
1.篩選門店編號為'CDXL'的運營數據
①第一種方法,用比較運算符‘==’:
data[data.門店編號=='CDXL']

②第二種方法,用比較函數'eq':
data[data['門店編號'].eq('CDXL')]
2.篩選單價小于等于10元的運營數據
③第一種方法,用比較運算符‘<=’:
data[data.單價<=10]

④第二種方法,用比較函數'le':
data[data['單價'].le(10)]
3.篩選銷量大于2000的運營數據
⑤第一種方法,用比較運算符‘>=’:
data[data.銷量>2]

⑥第二種方法,用比較函數'ge':
data[data['銷量'].ge(2)]

4.篩選除門店'CDXL'外的運營數據
⑦第一種方法,用比較運算符‘!=’:
data[data.門店編號!='CDXL']

⑧第二種方法,用比較函數'ne':
data[data['門店編號'].ne('CDXL')]

5.篩選2020年5月的運營數據
首先將日期格式化:
data['日期']=data["日期"].values.astype('datetime64')??#如果已為日期格式則此步驟可省略
data['日期']
import?datetime
s_date?=?datetime.datetime.strptime('2020-04-30',?'%Y-%m-%d').date()??#起始日期
e_date?=?datetime.datetime.strptime('2020-06-01',?'%Y-%m-%d').date()??#結束日期
⑨第一種方法,用邏輯運算符號'>' '<'和'&':
Pandasdatetime64[ns]不能直接與datetime.date相比,需要用pd.Timestamp進行轉化
data[(data.日期>pd.Timestamp(s_date))&(data.日期
⑩第二種,用比較函數'gt''lt'和'&':
data[(data['日期'].lt(pd.Timestamp(e_date)))&(data['日期'].gt(pd.Timestamp(s_date)))]

?第三種,用apply函數實現(xiàn):
id_a=data.日期.apply(lambda?x:?x.year?==2020??and?x.month==5)
data[id_a]

?第四種,用between函數實現(xiàn):
id_b=data.日期.between(pd.Timestamp(s_date),pd.Timestamp(e_date))
data[id_b]

6.篩選“類別ID”包含'000'的數據
?第一種,用contains函數:
data['類別ID']=data['類別ID'].values.astype('str')??#將該列轉換為字符數據類型
id_c=data.類別ID.str.contains('000',na=False)
data[id_c]

?第二種,用isin函數:
id_i=data.類別ID.isin(['000'])??#接受一個列表
data[id_i]
很遺憾,isin函數搞不定,因為它只能判斷該列中元素是否在列表中
7.篩選商品ID以“301”開頭的運營數據
?需要用contains函數結合正則表達式使用:
data['商品ID']=data['商品ID'].values.astype('str')??#將該列轉換為字符數據類型
id_c2=data.商品ID.str.contains('301\d{5}',na=False)
data[id_c2]

本文數據及代碼已打包,請在后臺回復“篩選數據”獲取。

菜鳥編程大本營,已經正式上線
專注于分享趣味的編程技巧,不限于Java, Python ,Go, Javascript等語言,讓菜鳥愛上編程,進階成為高手,歡迎關注。
菜鳥編程本營,從菜鳥進階高手
爆款文案
點這里,獲取新手福利
評論
圖片
表情

