python数据分析-drop_duplicates函数和unique函数介绍及注意

浏览前任留下的代码,发现第一条用了drop_duplicates函数,紧接着用了unique函数,所以记录一下两个函数的用法。

一、pandas.DataFrame.drop_duplicates
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

参数:

  • subset: 列标签,可选
  • keep: {‘first’, ‘last’, False}, 默认值 ‘first’
    first: 保留第一次出现的重复项。
    last: 删除重复项,仅保留最后一次出现的重复项。
    False: 删除所有重复项。
  • inplace:布尔值,默认为False,是否删除重复项或返回副本

返回: 重复数据删除 : DataFrame

df = pd.DataFrame({'one':['q','w','e','e'],'two':['ok','no','haha','haha'],'three':[1,2,3,3]})

python数据分析-drop_duplicates函数和unique函数介绍及注意_第1张图片

df.drop_duplicates(subset=None, keep = 'first', inplace = True)

python数据分析-drop_duplicates函数和unique函数介绍及注意_第2张图片
注意:subset设置为None的时候,默认所有列,意思是所有列同时(即:完全一样的两行)为重复的时候才删除。(我之前以为是一列一列循环判断的。。。)

df.drop_duplicates(subset=['two'], keep = 'first', inplace = True)

指定列的时候要用‘[ ]’括起来

df.drop_duplicates(subset=['two'], keep = False, inplace = True)

python数据分析-drop_duplicates函数和unique函数介绍及注意_第3张图片
keep为False的时候,删除所有重复的行。

二、unique函数

统计list中的不同值时,返回的是array.它有三个参数,可分别统计不同的量,返回的都是array.

import numpy as np
a = [1,2,3,3,4,5,5]
# 返回一个array
print(np.unique(a))
# [1 2 3 4 5]
 
# 返回该元素在list中第一次出现的索引(参数:return_index=True)
print(np.unique(a,return_index=True))
# (array([1, 2, 3, 4, 5]), array([0, 1, 2, 4, 5], dtype=int64)) 

# 返回原list中每个元素在新的list中对应的索引(参数:return_inverse=True)
print(np.unique(a,return_inverse=True))
# (array([1, 2, 3, 4, 5]), array([0, 1, 2, 2, 3, 4, 4], dtype=int64))
 
# 返回该元素在list中出现的次数(参数:return_counts=True)
print(np.unique(a,return_counts=True))
# (array([1, 2, 3, 4, 5]), array([1, 1, 2, 1, 2], dtype=int64))
 
# 同时设置上述参数时
p,q,m,n = np.unique(a,return_index=True,return_inverse=True,return_counts=True)
print(p,q,m,n)
# [1 2 3 4 5] [0 1 2 4 5] [0 1 2 2 3 4 4] [1 1 2 1 2]

#下面的两条注意是看同行博客标注的,我没做测试,但是很好理解,所以也在这里注意一下。 
# 注意当list中的元素不是数字而是list的时候,输出的数据类型与list中元素的长度有关
# 利用这种方法对list中元素去重或求里面元素的个数都不是好方法,很容易出错 

统计series中的不同值时,返回一个array,没有其它参数

import pandas as pd

b = pd.Series([1,2,3,4,4,5,5])

print(b.unique())

# [1 2 3 4 5]

你可能感兴趣的:(python,数据分析,pandas)