zoukankan      html  css  js  c++  java
  • Python--unique()与nunique()函数

    1 unique()

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

    当list中的元素也是list时,尽量不要用这种方法.

    import numpy as np
    a = [1,5,4,2,3,3,5]
    # 返回一个array
    print(np.unique(a))
    # [1 2 3 4 5]
    
    # 返回该元素在list中第一次出现的索引
    print(np.unique(a,return_index=True))
    # (array([1, 2, 3, 4, 5]), array([0, 3, 4, 2, 1]))
    
    # 返回原list中每个元素在新的list中对应的索引
    print(np.unique(a,return_inverse=True))
    # (array([1, 2, 3, 4, 5]), array([0, 4, 3, 1, 2, 2, 4]))
    
    # 返回该元素在list中出现的次数
    print(np.unique(a,return_counts=True))
    # (array([1, 2, 3, 4, 5]), array([1, 1, 2, 1, 2]))
    
    # 当加参数时,unique()返回的是一个tuple,这里利用了tuple的性质,即有多少个元素即可赋值给对应的多少个变量
    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 3 4 2 1] [0 4 3 1 2 2 4] [1 1 2 1 2]
    
    # 注意当list中的元素不是数字而是list的时候,输出的数据类型与list中元素的长度有关
    # 利用这种方法对list中元素去重或求里面元素的个数都不是好方法,很容易出错 

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

    import pandas as pd
    se = pd.Series([1,3,4,5,2,2,3])
    print(se.unique())
    # [1 3 4 5 2]

    2.nunique()

    可直接统计dataframe中每列的不同值的个数,也可用于series,但不能用于list.返回的是不同值的个数.

    df=pd.DataFrame({'A':[0,1,1],'B':[0,5,6]})
    print(df)
    print(df.nunique())
    #    A  B
    # 0  0  0
    # 1  1  5
    # 2  1  6
    # A    2
    # B    3
    # dtype: int64
    

    也可与groupby结合使用,统计每个块的不同值的个数.

    all_user_repay = all_user_repay.groupby(['user_id'])['listing_id'].agg(['nunique']).reset_index()
    #    user_id  nunique
    # 0       40        1
    # 1       56        1
    # 2       98        1
    # 3      103        1
    # 4      122        1

  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/14927545.html
Copyright © 2011-2022 走看看