<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
無論是在資料分析還是資料探勘的時候,資料篩選總會涉及到。這裡我總結了一下python中列表,字典,資料框中一些常用的資料篩選的方法。
案例一:從一個含有數位0-9的列表中篩選出偶數(奇數):
1.enumerate方法(生成兩列資料,第一列是索引,第二列是數值)
num=[i for i in range(10)] num1=[] for index,count in enumerate(num): if count%2==0: num1.append(num[index]) print(num1)
2.列表推導式(常用)
num=[i for i in range(10) if i%2==0] print(num)
二者輸出結果都是[0,2,4,6,8],相比之下列表推導式要簡潔的多
案例二:從一個包含學生姓名和成績的字典中,篩選出成績大於60的學生
首先,我們構造一個字典inf:
name=['Bob','Jim','Gin','Angel'] grade=[80,55,75,95] inf=dict(zip(name,grade)) print(inf)
輸出結果為:{‘Bob’: 80, ‘Jim’: 55, ‘Gin’: 75, ‘Angel’: 95}
以下,我們可以通過字典推導式篩選出學生成績(大於60):
dict1={key:value for key,value in inf.items() if value>60} print(dict1)
輸出結果:{‘Bob’: 80, ‘Gin’: 75, ‘Angel’: 95}
如果你只是想要返回成績大於60的學生名字或者分數的話,可以將dict1中的key:value部分改為key或者value即可.當然上述步驟是先建立一個字典,然後再從字典裡篩選出符合特定條件的值。可不可以一步完成呢?
當然闊以~
dict2={name[i]:grade[i] for i in range(len(grade)) if grade[i]>60} print(dict2)
輸出結果也是{‘Bob’: 80, ‘Gin’: 75, ‘Angel’: 95}.不過,這裡需要注意的是:如果列表name 和列表grade長度不一致的話,後面for迴圈中的len函數應該去長度較短的列表!
案例三:利用pandas從招聘資訊表中篩選出特定條件的資訊
首先,匯入資料
import pandas as pd df=pd.read_excel('job_information.xls',encoding='utf-8') df
招聘資訊表如下:
A. 篩選出工作經驗(exp)為4年的招聘資訊
df[df['exp'].isin([4])]
通用篩選方式:data[data[‘篩選列’].isin([num])]
需要注意的是:isin函數裡篩選的num必須用[]括起來!可以是一個,也可以是多個。但只能對特定的數位進行篩選,最後篩選的結果如下:
B. 篩選出具體給明的工資(salary)(過濾掉薪資面議)
df[df['salary'].str.contains('K')]
通用篩選方式:data[data[‘篩選列’].str.contains(‘特定字元’)]
需要注意的是:只能對特定的字串進行篩選,最後篩選結果如下:
C.篩選出只含有K的工資(過濾14薪等以及薪資面議)
df[~df['salary'].str.contains('薪')]
因為這裡需要過濾的字元都出現了"薪",我們依舊可以使用contains函數。需要注意的是"~“代表"非”(在對於isin函數也有用!),即排除salary中包含"薪" 這個字元的所有資料。最後,篩選結果如下:
D.篩選出含有K的工資(包括14薪等)
這裡由於展示的資料樣本少,該方法最終呈現的效果是和方法B是一樣的。使用的方法是:apply函數+正則
def select(x): pat='[0-9]?[0-9]K-[0-9]?[0-9]K' rst=re.search(pat,x) if rst: return rst.group(0) return 0 df['salary'].apply(select)
需要注意的是:在使用group函數的時候,需要先判斷是否可以先查到對應的值。否則會報錯(NoneType object has no attribute ‘group’ )。最後篩選的結果如下:
此外,還有一些篩選資料的方法如pivot_table(資料透視表),filter函數+lambda函數等,這就需要大家在實際應用的時候靈活選擇。
到此這篇關於Python 資料篩選的文章就介紹到這了,更多相關Python 資料篩選內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45