元素过滤

关于过滤的配合使用:

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:\Users\asaxh\Desktop\city.xlsx')

people=pd.read_excel(r'C:\Users\asaxh\Desktop\people.xlsx')

area=pd.read_excel(r'C:\Users\asaxh\Desktop\area.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('简称=="晋"')                       #按指定条件查询

 

posted @ 2019-06-08 08:56  青红*皂了个白  阅读(186)  评论(0编辑  收藏  举报