美文网首页
pandas教程系列四:过滤、筛选和排序

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

作者: HaigLee | 来源:发表于2019-12-04 22:24 被阅读0次

    作者: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 原创发布。未经许可,禁止转载

    相关文章

      网友评论

          本文标题:pandas教程系列四:过滤、筛选和排序

          本文链接:https://www.haomeiwen.com/subject/ekrrgctx.html