当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Python pandas自定义函数的使用方法示例

    栏目:Linux/apache问题 时间:2019-12-03 10:57

    本文实例讲述了Python pandas自定义函数的使用方法。分享给大家供大家参考,具体如下:

    自定义函数的使用

    import numpy as np
    import pandas as pd
    # todo 将自定义的函数作用到dataframe的行和列 或者Serise的行上
    ser1 = pd.Series(np.random.randint(-10,10,5),index=list('abcde'))
    df1 = pd.DataFrame(np.random.randint(-10,10,(4,5)),index=list('ACBD'),columns=list('abcde'))
    # todo 定义一个函数,求其和,绝对值,最大值减最小值的差值,平方
    def func(x):
     # print(x)
     print('--------------')
     num= np.max(x)-np.min(x)
     a = abs(x)
     b= x**2
     # return num
     # return a
     return b
    print(ser1.apply(func))
    def func1(x):
     # print(x)
     print('--------------')
     # num= np.max(x)-np.min(x)
     a = abs(x)
     b= x**2
     # return num
     # return a
     return b
    print(df1.apply(func1,axis = 1))
    # todo 使用匿名函数实现----求其和,绝对值,最大值减最小值的差值,
    print(df1.apply(lambda x:x**2,axis=1))
    print('------')
    print(df1.apply(lambda x:np.max(x)-np.min(x),axis=1))
    print('---------')
    print(df1.apply(lambda x:abs(x),axis=1))
    # applymap的使用
    # todo 使用applymap 因为applymap作用在每个元素上,所以不需要指定axis
    print(df1.applymap(lambda x:x**2))
    print('---------')
    print(df1.applymap(lambda x:abs(x)))
    
    

    排序

    import numpy as np
    import pandas as pd
    ser1 = pd.Series(np.random.randint(-10,10,10),index=list('acbdfeghji'))
    df1 = pd.DataFrame(np.random.randint(-10,10,(4,5)),index=list('ADBC'),columns=list('abcde'))
    print(ser1)
    print(df1)
    print('------------------')
    # todo 按照索引排序 sort_index()
    # print(ser1.sort_index())#默认升序
    # print(ser1.sort_index(ascending=False))#指定ascending为降序
    # print(df1.sort_index())#默认行升序
    # print(df1.sort_index(ascending=False))#行降序
    # print(df1.sort_index(axis=1))#列升序
    # print(df1.sort_index(ascending=False,axis=1))#列降序
    # todo 按照值排序
    print(ser1.sort_values())#默认升序
    print(ser1.sort_values(ascending=False))#指定ascending为降序
    # dataframe 对象比较复杂,需要按照哪一列来进行排序
    print(df1.sort_values(by='a'))#默认列升序
    print(df1.sort_values(by='a',ascending=False))#列降序
    print(df1.sort_values(by='A',axis=1))#行升序
    print(df1.sort_values(by='A',ascending=False,axis=1))#行降序
    
    

    数据重构

    import numpy as np
    import pandas as pd
    ser1 = pd.Series(np.random.randint(-10,10,10),index=[list('aabbccddee'),[1,2,1,2,1,2,1,2,1,2]])
    df1 = pd.DataFrame(np.random.randint(-10,10,(4,5)),index=list('aabb'),columns=list('abcde'))
    print(ser1)
    print(df1)
    print('-----------------------')
    # todo 外层索引取值
    print(ser1['a'])#获取单个外层索引
    print(ser1['a':'e'])#获取多个外层
    # todo 内层索引取值
    print(ser1[:,1])
    # todo 指定外层,内层索引取值
    print(ser1['a',1])
    # todo 交换分层-----swaplevel()
    print(ser1.swaplevel())
    # todo 将Sterise转为dataframe对象外层索引作为行索引,内层索引作为列索引
    print(ser1.unstack())
    # todo 将dataframe转为Sterise对象行索引作为外层索引行索引,列索引作为内层索引列
    print(df1.stack())
    # todo dataframe 转字典
    print(df1.to_dict())
    # todo dataframe 转csv文件
    print(df1.to_csv())
    
    

    数据连接操作