文科生自学Python-按条件筛选和抽取数据样本
--凡事勤则易,凡事惰则难,学习编程成就更好的自己--
Python语言简洁生动,特别适合文科生学习入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的各种棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。
今天分享的知识点是:如何按指定条件筛选和抽取数据样本,因为平时在做数据处理和分析工作中,往往需要按某些字段特征进行筛选和提取目标数据集,下面用一个有趣的案例来展开说明:

通过观察得知该数据集合共有13个样本,接下来看看如何钻取得到想要的目标数据集吧:
首先在Jupyter Notebook环境下读取和查看数据:

任务1.提取性别为女的数据

任务2.提取母语/方言为广东话和英语的数据
使用了isin方法,注意括弧里输入列表

任务3.提取评级中排除“无年终奖”的其他剩余数据
使用~符号进行反选数据,这种方法更加简单高效

任务4.提取性别为男且工龄大于等于20年的数据
注意用“&”符号表示且关系即是取交集,每个条件单独用()限定好

任务5.提取姓名中包含有“小”字的数据
注意一定使用str.contains这个表达式

任务6.提取姓名中包含有“小”字且性别是女的数据
大家是不是感觉越来越好玩了,其实也不是特别难!!!

任务7.提取年龄在30岁到50岁之间的数据(包含30和50)

任务8.提取姓名中包含有“小”字或绩效考核成绩大于等于90的数据
注意用“|”符号表示或关系即是取并集,每个条件单独用()限定好

代码如下:
import pandas as pdimport osdef Set_Work_Path(x): try: os.chdir(x) route = os.getcwd() return route except Exception: print('No Result')work_path = r'E:\DATA\03AUG21'Set_Work_Path(work_path)data = pd.read_excel('Sample.xlsm',sheet_name='DATA-Python',header=0,index_col=None)display(data)#select data with female in sex fielddata_female=data[data['性别']=='女']display(data_female)#select data with dedicated languages or dialectsdata_female=data[data['母语/方言'].isin(['广东话','英语'])]display(data_female)#select data without yearly bonusdata_without_bonus=data[~data['评级'].isin(['无年终奖'])]display(data_without_bonus)#select data with male in sex field and work over 20 yearsdata_male_over_10_job_years=data[(data['性别'].isin(['男']))&(data['工龄']>=20)]display(data_male_over_10_job_years)#select data with name containing little in Chinesedata_with_little_in_name = data[data['姓名'].str.contains('小')]display(data_with_little_in_name)#select data with name containing little in Chinese and also femaledata_with_little_in_name_female = data[(data['姓名'].str.contains('小'))&(data['性别'].isin(['女']))]display(data_with_little_in_name_female)#select data with age in a perioddata_work_bio_age = data[(data['年龄']<=50)&(data['年龄']>=30)]display(data_work_bio_age)data_with_little_in_name_good_performance = data[(data['姓名'].str.contains('小'))|(data['绩效考核成绩']>=90)]display(data_with_little_in_name_good_performance)
END
我为人人,人人为我!!欢迎大家关注,点赞和转发!!!
~~人生不是赛场,梦想不容退场~~不断努力学习脱变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!