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

发布时间:2019-12-06 22:22 来源:互联网 当前栏目:web技术类

本文实例讲述了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())

数据连接操作

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、