zoukankan      html  css  js  c++  java
  • 元素过滤

    关于过滤的配合使用:

    notnull 配合all  isnull配合any

    比如:对下列数据过滤获取有用数据

    方法一:空值排除法

    import pandas as pd
    
    import numpy as np
    
    from pandas import Series,DataFrame
    
    df=DataFrame(data=np.random.randint(10,60,size=(8,8)))
    
    df.iloc[1,3]=None
    df.iloc[2,6]=None
    df.iloc[4,1]=None
    df.iloc[5,6]=np.nan
    
    df
    
    df.notnull().all(axis=1)                      #不为空的全部记录布尔值 索引
    
    df.loc[df.notnull().all(axis=1)]              #对该索引取值
    
    df.loc[df.isnull().any(axis=1)]               #存在空值的记录条数

     直接调用dropna方法去执行空值去除

    df.dropna(axis=0)

    方法二:用当前值进行填充

    df.fillna(method='ffill',axis=1)              #用前面的值填充   axis=1横向填充 axis=0 上下填充
    df.fillna(method='backfill',axis=1)           #用后面的值填充

     去除行元素重复:

    df.drop_duplicateates(keep="last")  #重复行仅保留最后一行值

    关于替换操作:

    df.replace(to_replace={66:6666})          #将66替换成6666
    dr.replace(to_replace={2:66},value=999)        #把2当做列索引 66替换成999

     map的映射与计算:

    import pandas as pd
    
    import numpy as np
    
    from pandas import Series,DataFrame
    
    dic={
        'name':['kevin','lisa','jack'],
        'money':[8500,12000,15000]
    }
    df=DataFrame(data=dic)
    
    df
    
    dic={
        'kevin':'凯文',
        'lisa':'丽莎',
        'jack':'杰克'
    }
    
    
    df['c_name']=df['name'].map(dic)          #英文名映射中文名
    
    df
    
    def get_salary(s):
        if s<10000:
            return s
        else:
            s-=(s-10000)*0.3
            return s
    
    df['money'].map(get_salary)

    df['after']=df['money'].map(get_salary)

    对多表数据进行拼接:

    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    
    city=pd.read_excel(r'C:UsersasaxhDesktopcity.xlsx')
    
    people=pd.read_excel(r'C:UsersasaxhDesktoppeople.xlsx')
    
    area=pd.read_excel(r'C:UsersasaxhDesktoparea.xlsx')
    
    display(city.head(2),area.head(2),people.head(2))
    # pd.merge(city,area,on='简称',how='outer')
    pd.merge(city,area,left_on='简称',right_on='简称',how='outer')
    
    city_peo=pd.merge(city,people,left_on='简称',right_on='简称',how='outer')
    cpa=pd.merge(city_peo,area,left_on='简称',right_on='简称',how='outer')               #城市人口面积拼接数据
    
    cpa.drop(labels='Unnamed: 3',axis=1,inplace=True)                         #删除空白列

    -------------------------------------------------------------------------------------

    cpa.isnull().any(axis=0)                       #查询数据为空列
    
    cpa.query('简称=="晋"')                       #按指定条件查询
  • 相关阅读:
    ScreenToGif 使用教程
    无问西东
    php如何解决中文乱码问题?
    layer父页面调用子页面的方法
    弹层组件文档
    关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误
    centos下修改文件后如何保存退出
    Linux CentOS 7的图形界面安装(GNOME、KDE等)
    CentOS7安装详解
    Could not attach to pid : "xx"最近启动Xcode运行项目都会出现这个问题,再次启动或者多启动几次,就可以正常运行工程了。
  • 原文地址:https://www.cnblogs.com/wen-kang/p/10989919.html
Copyright © 2011-2022 走看看