python去重复的数据_Python数据处理从零开始----第三章(pandas)④数据合并和处理重复值目录数据合并移除重复数据...

===============================================

数据合并

在数据处理中,通常将原始数据分开几个部分进行处理而得到相似结构的Series或DataFrame对象,我们该如何进行纵向合并它们?这时我们可以选择用pd.concat()方式极易连接两个或两个以上的Series或DataFrame对象。如下是该函数的参数解读:pd.concat(objs, axis=0, join=’outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)参数说明:objs:连接对象,多以列表、字典传入

axis:轴向,0代表纵向连接,1,代表横向连接

join:连接方式,共有’inner’,’left’,right’,’outer’

join_axes:参与连接的索引

ignore_index:是否忽略索引

keys:层次化索引横向连接import pandas as pd

s1=pd.Series([1,2,3],index=list('abc'))

s2=pd.Series([3,4,5],index=list('bde'))

pd.concat([s1,s2])

Out[6]:

a 1

b 2

c 3

b 3

d 4

e 5

dtype: int64纵向连接pd.concat([s1,s2],axis=1)

__main__:1: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version

of pandas will change to not sort by default.

To accept the future behavior, pass 'sort=False'.

To retain the current behavior and silence the warning, pass 'sort=True'.

Out[7]:

0 1

a 1.0 NaN

b 2.0 3.0

c 3.0 NaN

d NaN 4.0

e NaN 5.0

内连接pd.concat([s1,s2],axis=1,join='inner')

Out[8]:

0 1

b 2 3import pandas as pd

from pandas import Series,DataFrame

dict1={

'key':['a','b','c'],

'col1':range(3)

}

df1 = DataFrame(dict1)

df1

Out[18]:

key col1

0 a 0

1 b 1

2 c 2

dict2={

'key':['b','c','d'],

'col2':range(1,4)

}

df2 =DataFrame(dict2)

df2

Out[19]:

key col2

0 b 1

1 c 2

2 d 3

dat = pd.merge(df1,df2)

dat

Out[14]:

key col1 col2

0 b 1 1

1 c 2 2

pandas默认寻找共同的column,然后合并共同的观测值,但是可以根据,on='',和how=''来控制连接的键和合并的方式。

移除重复数据首先创建一个数据框# -*- coding: utf-8 -*-

"""

Created on Thu Nov 29 01:33:46 2018

@author: czh

"""

%clear

%reset -f

# In[*]

import seaborn as sns

import matplotlib.pyplot as plt

%matplotlib inline

import os

import numpy as np

import pandas as pd

# In[*]

data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],

'k2': [1, 1, 2, 3, 3, 4, 4]})

data

data.duplicated()

0 False

1 False

2 False

3 False

4 False

5 False

6 True

dtype: bool

通过以上我们发现最后一行(第七行)存在一个完全重复的行,一般情况下,我们需要删除掉这行,主要通过drop_duplicates()函数,该函数返回的结果是一个数据框。data.drop_duplicates()

Out[9]:

k1 k2

0 one 1

1 two 1

2 one 2

3 two 3

4 one 3

5 two 4

这两个方法默认会判断全部列,你也可以指定部分列进行重复项判断(一般情况下,我们希望去掉某一列重复的观测值),假设我们还有一列值,且只希望根据k1列过滤重复项:data['v1'] = range(7)

data

data.drop_duplicates(['k1'])

Out[10]:

k1 k2 v1

0 one 1 0

1 two 1 1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值