• 《python数据分析》5.2.5~5.2.8


      5.2.5 算术和数据对齐

    Series对象或者是DataFrame对象相加时,相同的索引标签项相加,没有的索引标签项合并到结果,值是NaN

    df1 = pd.DataFrame({'A':[1,2]})
    
    df2 = pd.DataFrame({'B':[3,4]})
    
    df1
    Out[5]: 
       A
    0  1
    1  2
    
    df2
    Out[6]: 
       B
    0  3
    1  4
    
    df1 + df2
    Out[7]: 
        A   B
    0 NaN NaN
    1 NaN NaN
    
    df3 =pd.DataFrame({'A':[3,4],'C':[1,1]})
    
    df3 + df1
    Out[9]: 
       A   C
    0  4 NaN
    1  6 NaN
    

      做运算时可以传入填充值来填充NaN

    比如df1.add(df2,fill_value=0)

    5.2.5.2 DataFrame和Series间的操作

    DataFrame对象的iloc取值,就是一个Series对象,当DataFrame和Series进行加减运算时,相当于DataFrame每一行和Series进行运算,这个就是广播机制

    当然也可以指定在列上进行广播,DataFrame.sub(Series3,axis='index')

    5.2.6 函数应用和映射

    可以将函数应用到行或列上

    f = lambda x: x.max() - x.min()
    
    f
    Out[13]: <function __main__.<lambda>(x)>
    
    df1.apply(f)
    Out[14]: 
    A    1
    dtype: int64
    

      当然apply可以传入 axis=‘columns’,每行进行调用

    逐元素进行的函数是applymap

    5.2.7排序和排名

    调用sort_index函数进行排序,可以传递参数 axis=1是在列上进行排序,默认是0在行上进行排序

    sort_values() 函数按元素进行排序

    可以传入by='列名',对列进行排序

    frame = pd.DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
    
    frame.sort_values(by='b')
    Out[17]: 
       b  a
    2 -3  0
    3  2  1
    0  4  0
    1  7  1
    

     可以传递多个列名

    frame.sort_values(by=['a','b'])
    Out[18]: 
       b  a
    2 -3  0
    0  4  0
    3  2  1
    1  7  1
    

      是先对 a列进行排序,如果a列中有相同的,则再按b进行排序

    rank函数是对Series对象和DataFrame对象进行排名

    默认没有传入参数时,有相同元素的话,是相同元素的排名相加除以个数,得出他们的排名

    obj=pd.Series([7,-5,7,4,2,0,4])
    
    obj.rank()
    Out[20]: 
    0    6.5
    1    1.0
    2    6.5
    3    4.5
    4    3.0
    5    2.0
    6    4.5
    dtype: float64
    

      可以看到两个7的排名是6.5就是 (6+7)/2 的结果,4的排名也如此

  • 相关阅读:
    单词统计-续
    “帮你APP”团队冲刺10
    软件工程周总结15
    梦断代码阅读笔记03
    个人课程总结
    梦断代码阅读笔记02
    梦断代码阅读笔记01
    软件工程周总结14
    计算最长英语单词链
    软件工程周总结13
  • 原文地址:https://www.cnblogs.com/yemeng/p/14659997.html
Copyright © 2020-2023  润新知