pandas处理数据

处理丢失数据

None 数据类型为对象 不可计算
np.nan(NaN) 数据类型为浮点,可以参加运算 np.NAN+1 还为空
在pandas中如果遇到了None形式的空值则pandas会将其强转成NAN的形式。
df.isnull() 返回所有元素的布尔值数据
df.notnull() 返回所有元素的布尔值数据
df.isnull().any(axis=1) 返回所有行是否有空的布尔值
df.notnull().all(axis=1) 返回所有行是否非空的布尔值

删除缺失值方法
1.
indexs = df.loc[df.isnull().any(axis=1)].index
df.drop(labels=indexs,axis=0)
2.
df.dropna(axis=0) drop相关的函数,axis=0为行方向,其他使用场景和其相反
缺失值填入数据
df.fillna(value=999)
data.fillna(method=‘ffill’,axis=0).fillna(method=‘bfill’,axis=0)
ffill为数据之后的数据填入,bfill为空数据之前的数据填入
删除重复行数据
1.
df.duplicated(keep=‘first’) 返回重复行的布尔值
df.loc[~(df.duplicated(keep=‘first’))] 删除重复行
2.
df.drop_duplicates(keep=‘first’)

写逻辑处理特殊值
std2 = df[‘C’].std()*2
df.loc[~(df[‘C’] > std2)]

读取数据,删除没用的列
data = pd.read_excel(’./testData.xlsx’).drop(labels=[‘none’,‘none1’],axis=1)

级联操作
pd.concat, pd.append
级联
有相同的行列索引,可以用不同的的连接方式,连接表格 inner outter
外连接:补NaN(默认模式)
内连接:只连接匹配的项
df1 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A’,‘B’,‘C’])
df2 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A’,‘B’,‘D’])

pd.concat((df1,df2),axis=0,join=‘inner’)
df1.append(df2) 相当于join=outer
inner连接共同有的数据,outter保证所有数据都在,空值用null补

merge与concat的区别在于,merge需要依据某一共同列来进行合并

使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

注意每一列元素的顺序不要求一致

pd.merge(df1,df2,on=‘employee’)
pd.merge(df3,df4)#on如果不写,默认情况下使用两表中公有的列作为合并条件
pd.merge(df1,df5,how=‘right’) 类似MySQL的左连接有连接,左连接保证第一张表的全部数据,右连接保证第二张表的全部数据,

3.没有共同的列
当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中的列作为连接条件
pd.merge(df1,df5,left_on=‘employee’,right_on=‘name’)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值