pandas教程系列四:过滤、筛选和排序

2019-12-04  本文已影响0人  HaigLee

作者:HaigLee
地址:https://www.jianshu.com/u/67ec21fb270d
本文由 @HaigLee 原创发布。未经许可,禁止转载

1. 过滤、 筛选

1.1. 导入库

import pandas as pd 

1.2. 年龄筛选函数

def validate_age(a):
    return 18 <= a <= 30 

1.3. 分数分级为b的进行筛选函数

def level_b(s):
    return 60 <= s < 90

1.4. 读取文件,设定ID为索引列

students = pd.read_excel("./data/Students_filter.xlsx",index_col='ID')
students
数据HaigLee.png

1.5. 打印数据

students['Age'].apply(validate_age)
数据2.png

1.6. 打印数据

students.Score.apply(level_b)
数据3.png

1.7. 通过行标签索引数据,loc选取boolean值为true的行数据

students_filter = students.loc[students['Age'].apply(validate_age)].loc[students.Score.apply(level_b)]
students_filter
数据4.png

2 过滤和排序

2.1.从互联网地址上直接拉取数据,可以方便用于做爬虫抓取数据的操作

2.1.1 通过url直接在url地址远程读取数据到本地

url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv'
chipotle = pd.read_csv(url, sep = '\t')

chipotle.head(10)
图片5.png

2.1.2. 设定order_id为索引列,操作修改当前dataframe

chipotle.set_index('order_id',inplace=True)

2.1.3. 将数据保存在本地,分隔符为制表符

chipotle.to_csv('./data/chipotle.tsv',sep='\t')

2.2. 统计商品价格超过$11的商品

2.2.1. 将商品价格中的单位$去掉

price = [float(value[1:-1]) for value in chipotle.item_price]

2.2.2. 将DataFrame中的商品价格进行替换

chipotle.item_price = price

2.2.3. 将商品名称和质量级别的商品进行过滤,去除重复商品

chipotle_filter = chipotle.drop_duplicates(['item_name','quantity'])
chipotle_filter.head(10)
数据6.png
chipotle_filter.quantity==1

order_id
1 True
1 True
1 True
1 True
2 False
3 True
3 True
4 True
4 True
5 True
6 True
6 True
8 True
9 False
11 True
14 True
14 True
17 True
17 True
18 True
19 True
19 True
20 True

25 True
26 True
26 True
28 True
40 True
49 True
60 False
...

654 False
668 True
686 True
759 False
768 False
901 False
970 False
1010 False
1024 False
1051 False
1055 False
1142 False
1167 False
1170 False
1182 False
...
1336 False
1360 False
1398 False
1443 False
1443 False
1443 False
1454 False
1500 True
1559 False
1559 False
1559 False
1592 False
1660 False
1738 False
1786 False
Name: quantity, Length: 103, dtype: bool

2.2.4. 根据quantity = 1 的进行过滤

chipotle_first_class = chipotle_filter[chipotle_filter.quantity==1]

2.2.5. 根据价格进行过滤,选取出item_name不同的数据条数

chipotle_first_class[chipotle_first_class['item_price']>10].item_name.nunique()

12

作者:HaigLee
地址:https://www.jianshu.com/u/67ec21fb270d
本文由 @HaigLee 原创发布。未经许可,禁止转载

上一篇下一篇

猜你喜欢

热点阅读