哈嘍,大家好,今天為d大家總結了幾個篩選數據得常用技巧:
主要包括以下幾個知識點:
“比較運算:==、<、>、>=、<=、!=范圍運算:between(left,right)字符篩選:str.contains(pattern或字符串,na=False)邏輯運算:&(與)、|(或)、not(取反)比較函數:eq, ne, le, lt, ge, gt(相當于==,=!,<=,<,>=,>)apply和isin函數
”
接下來我們主意講解上面函數各自得運用,以案例進行開始我們得講解吧!import pandas as pd
data=pd.read_excel('超市運營數據模板.xlsx')
data
先看一下各列得數據類型:
data.dtypes
商品發布者會員賬號 int64
類別發布者會員賬號 int64
門店編號 object
單價 float64
不錯 float64
訂單發布者會員賬號 object
日期 datetime64[ns]
時間 object
dtype: object
下面以實際應用場景為例開始講解:
1.篩選門店編號為'CDXL'得運營數據①第壹種方法,用比較運算符‘==’:data[data.門店編號=='CDXL']
data[data['門店編號'].eq('CDXL')]
data[data.單價<=10]
data[data['單價'].le(10)]
data[data.不錯>2]
data[data['不錯'].ge(2)]
data[data.門店編號!='CDXL']
data[data['門店編號'].ne('CDXL')]
首先將日期格式化:
data['日期']=data["日期"].values.astype('datetime64') #如果已為日期格式則此步驟可省略
data['日期']
import datetime
s_date = datetime.datetime.strptime('上年-04-30', '%Y-%m-%d').date() #起始日期
e_date = datetime.datetime.strptime('上年-06-01', '%Y-%m-%d').date() #結束日期
Pandasdatetime64[ns]不能直接與datetime.date相比,需要用pd.Timestamp進行轉化
data[(data.日期>pd.Timestamp(s_date))&(data.日期<pd.Timestamp(e_date))]
data[(data['日期'].lt(pd.Timestamp(e_date)))&(data['日期'].gt(pd.Timestamp(s_date)))]
id_a=data.日期.apply(lambda x: x.year ==上年 and x.month==5)
data[id_a]
id_b=data.日期.between(pd.Timestamp(s_date),pd.Timestamp(e_date))
data[id_b]
data['類別發布者會員賬號']=data['類別發布者會員賬號'].values.astype('str') #將該列轉換為字符數據類型
id_c=data.類別發布者會員賬號.str.contains('000',na=False)
data[id_c]
id_i=data.類別發布者會員賬號.isin(['000']) #接受一個列表
data[id_i]
很遺憾,isin函數搞不定,因為它只能判斷該列中元素是否在列表中
7.篩選商品發布者會員賬號以“301”開頭得運營數據?需要用contains函數結合正則表達式使用:data['商品發布者會員賬號']=data['商品發布者會員賬號'].values.astype('str') #將該列轉換為字符數據類型
id_c2=data.商品發布者會員賬號.str.contains('301\d{5}',na=False)
data[id_c2]
為了方便大家學習,我已經將感謝數據及代碼打包好,如有需要,可以感謝閱讀下方卡片,感謝對創作者的支持后在后臺回復:篩選數據 獲取。