• 【pandas小技巧】--列值的映射


    映射列值是指将一个列中的某些特定值映射为另外一些值,常用于数据清洗和转换。

    使用映射列值的场景有很多,以下是几种常见的场景:

    1. 将字符串类型的列中的某些值映射为数字。例如,将“男”和“女”分别映射为 0 和 1,以便进行机器学习算法的训练和预测。
    2. 将缩写替换为全称。例如,将“USA”和“UK”分别替换为“美国”和“英国”,使得数据更加易读。
    3. 将错误拼写的单词替换为正确的单词。例如,将“Cocacola”替换为“Coca-Cola”,以避免错误的统计和分析。

    本篇介绍几个常用的映射小技巧。

    1. map 映射

    map映射是最简单也是最直接的,比如下面的示例,将性别映射成01

    import pandas as pd
    
    df = pd.DataFrame({
        "name": ["Lily", "Harry", 
                 "Annie", "Joe","Tom"],
        "sex": ["female", "male", 
                "female", "male","male"],
        "grade":["A", "E", "B", "F", "A"],
    })
    
    df.sex = df.sex.map({
        "female": 0, 
        "male": 1,
    })
    df
    

    image.png

    2. factorize 映射

    map函数映射列的值是最直观的方式,不过如果列的值种类比较多的时候,一个一个映射比较麻烦。
    比如下面示例中的 grade 列,不像 sex 列只有两种值。

    这时,可以用 factorize 方法来映射。

    df = pd.DataFrame({
        "name": ["Lily", "Harry",
                 "Annie", "Joe","Tom"],
        "sex": ["female", "male",
                "female", "male","male"],
        "grade":["A", "E", "B", "F", "A"],
    })
    
    df.sex = df.sex.factorize()[0]
    df.grade = df.grade.factorize()[0]
    df
    

    image.png

    factorize函数返回的是一个二元元组,第一个元素是映射之后的数字数组,
    第二个元素是索引类型,索引的值就是列中各个不同的值。

    df.grade.factorize()
    

    image.png
    所以代码中用的是 factorize()[0]

    这里还有一个小技巧,如果映射后想把得到的值二元化,
    比如上面的 grade 列,映射之后有4种不同的值,代表不同的成绩等级。
    如果我们只想要不及格F)和及格(非F)两种情况,那么

    df.grade = df.grade.factorize()[0]
    df.grade = (df.grade == 3).astype("int")
    df
    

    image.png

  • 相关阅读:
    第四章分类问题
    【OAuth2】十三、OAuth2AuthorizationServerConfigurer的过滤器
    【SpringBoot】微服务中异步调用数据提交数据库的问题
    2022-08-02
    RFID智能制造应用:助力企业提升制造效率!
    Nacos源码系列—订阅机制的前因后果(上)
    selenium模拟登录无反应
    Vue3 + TS 防抖动
    SpringBoot整合Druid数据源
    JavaScript高级复习上(59th)
  • 原文地址:https://www.cnblogs.com/wang_yb/p/17619979.html