首页 > 开发 > Python > 正文

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

2020-07-28 13:56:57
字体:
来源:转载
供稿:网友

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

自定义函数的使用

import numpy as npimport 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 bprint(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 bprint(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作用在每个元素上,所以不需要指定axisprint(df1.applymap(lambda x:x**2))print('---------')print(df1.applymap(lambda x:abs(x)))

排序

import numpy as npimport pandas as pdser1 = 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 npimport pandas as pdser1 = 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())

数据连接操作

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表