• pandas 新增数据列(直接赋值、apply,assign、分条件赋值)


    # pandas新增数据列(直接赋值、apply、assign、分条件赋值)
    
    # pandas在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析
        # 1 直接赋值
        # 2 df.apply方法
        # 3 df.assig方法
        # 4 按条件选择分组分别赋值
    
    import pandas as pd
    
    # 0 读取csv数据到dataframe
    df = pd.read_csv("beijing_tianqi_2018.csv")
    print(df.head())
    
    # 1 直接赋值的方法
    # 实例:清理温度列,变成数字类型
    
    # 替换掉温度的后缀
    df.loc[:,'bWendu'] = df['bWendu'].str.replace("","").astype('int32')
    df.loc[:,'yWendu'] = df['yWendu'].str.replace("","").astype('int32')
    
    # 实例:计算温差
    # 注意:df["bWendu"]其实是一个Series,后面的减法返回的是Series
    df.loc[:,"wencha"] = df["bWendu"] - df["yWendu"]
    print(df.head())
    
    # 2 df.apply方法
    
    # 实例:添加一列温度类型:
    #  1 如果最高温度大于33度就是高温
    #  2 如果最低温度低于-10度就是低温
    #  3 否则就是常温
    def get_wendu_type(x):
        if x["bWendu"] > 33:
            return "高温"
        if x["yWendu"] < -10:
            return "低温"
        else:
            return "常温"
    # 注意需要设置axis ==1 ,这是series的index是columns
    df.loc[:,"wendu_type"] = df.apply(get_wendu_type,axis=1)
    # 查看温度类型的计数(高温、低温、常温各有多少天)
    print(df["wendu_type"].value_counts())
    
    
    # 3 df.assign方法
    # 实例:将温度从摄氏度变成华氏度
    
    # 可以同时添加多个新的列
    df.assign(
        yWendu_huashi = lambda x : x['yWendu']*9/5 +32,
        bWendu_huashi = lambda x : x['bWendu']*9/5 +32
    )
    print(df['yWendu_huashi'])
    
    # 4 按条件选择分组分别进行赋值
    # 按条件选择数据,然后随这部分数据赋值新列
    # 实例:高温温差大于10度,则认为温差大
    
    # 先创建空列(这是第一种创建新列的方法)
    df['wencha_type'] = ""
    df.loc[df["bWendu"]-df["yWendu"] > 10,"wencha_type"] = "温差大"
    df.loc[df["bWendu"]-df["yWendu"] <=10,"wencha_type"] = "温差正常"
    
    df["wencha_type"].value_counts()
  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/spp666/p/11849071.html
Copyright © 2020-2023  润新知