美文网首页
Pandas数据分析-数据整理data wrangling, s

Pandas数据分析-数据整理data wrangling, s

作者: Mc杰夫 | 来源:发表于2022-05-15 10:39 被阅读0次

    (2022.05.16 Mon)

    数据分箱

    分箱指的是将连续值转化为离散值的过程,Pandas指令有cutqcutvalue_countbetween,用于将连续数据转换为离散数据。

    cutqcut

    cut指令用于将指定的序列按数量排序分组形成分位点,保证每组数值覆盖的范围大致相同。其中用于执行cut操作的对象只能是array-list data,不能是一个DataFrame;参数bins可以指定为一个标量(表示范围均分成几份,而不是每一个bin中的数据个数相同),或一个数组(手动指定范围);参数labels用于给每个bin加名字,如果不指定则以该bin的范围表示;参数right表示是否包含bin的右部,默认是True表示bin的范围是左开右闭型即包含右部,False表示左闭右开型即不含右部;include_lowest表示是否包含左边界值,True or False

    >>> df1 = pd.DataFrame({'number': np.random.randint(1, 100, 1000)}) # 1000个随机数,分布于1到1000
    >> df1['bins'] = pd.cut(df1['number'], bins=5, labels=['a', 'b', 'c', 'd', 'e']) # 对number数列的数字范围进行均分,每个bin分别冠以a到e的值
    # df1['bins'] = pd.cut(df1['number'], 5, labels=['a', 'b', 'c', 'd', 'e']) # 与上一条命令等价
    >> df1['bins'].value_counts() # 统计每个bin出现次数
    d    204
    c    203
    a    200
    e    200
    b    193
    Name: bins, dtype: int64
    

    将bin的范围固定。

    >> df= pd.DataFrame({'number':np.random.randint(1, 100, 5)}) # 10个随机数,分布于1到100
    >> df['bins'] = pd.cut(x=df['number'], bins=[1, 20, 40, 60, 80, 100]) # 将随机数分配到指定的bins,并生成新的列
    >> df
        number bins
    0   59  (40, 60]
    1   37  (20, 40]
    2   91  (80, 100]
    3   5   (1, 20]
    4   82  (80, 100]
    

    设定bin的左闭右开。

    >> df= pd.DataFrame({'number':np.random.randint(1, 100, 5)}) 
    >> df['bins'] = pd.cut(x=df['number'], bins=[1,20,40,60,80,100], \ 
                           right=False) # 设定左闭右开
    df
        number  bins
    0   2   [1, 20)
    1   21  [20, 40)
    2   96  [80, 100)
    3   87  [80, 100)
    4   36  [20, 40)
    

    qcut指令用于得到序列的分位值,即从数量上均分bin,或每个bin的数据个数相同/相差不多。参数部分与cut类似;retbins参数如果为True将返回bins的范围,默认False不返回bins结果。

    >> df2 = pd.DataFrame({'number':np.random.randint(0, 100, 1000)}) 
    >> df2['bins'], tmp_bins = pd.qcut(x=df2['number'], q=5, labels=['a','b','c','d','e'], retbins=True)
    >> df2['bins'].value_counts()
    b    214
    a    202
    d    202
    e    198
    c    184
    Name: bins, dtype: int64
    >> tmp_bins
    array([ 0. , 18. , 40. , 58.4, 77. , 99. ])
    

    相关文章

      网友评论

          本文标题:Pandas数据分析-数据整理data wrangling, s

          本文链接:https://www.haomeiwen.com/subject/gyviurtx.html