怎么通过互联网做一个服务的网站,对比插件 wordpress,网站运营的含义是什么,很多国外ip访问网站参考资料#xff1a;活用pandas库
1、向量化函数 使用apply时#xff0c;可以按行或按列应用函数。如果想应用自定义的函数#xff0c;必须重写它#xff0c;因为整列或整行传递到了函数的第一个参数中。可以利用向量化函数和装饰器对所有函数进行向量化。对代码进行向量化…参考资料活用pandas库
1、向量化函数 使用apply时可以按行或按列应用函数。如果想应用自定义的函数必须重写它因为整列或整行传递到了函数的第一个参数中。可以利用向量化函数和装饰器对所有函数进行向量化。对代码进行向量化也可以提升运行性能。
# 导入pandas库
import pandas as pd#创建一个DataFrame
dfpd.DataFrame({a:[10,20,30],b:[20,30,40]
})# 创建自定义函数
def avg_2(x,y):return (xy)/2. 对于向量函数我们希望向上述自定函数中的x和y分别传入一个值向量结果应该是给定x值和y值得平均值并且顺序保持不变即能写成avg_2(df[a],df[b])并且结果类似于[15,25,35]。 使用numpy库的vetorize函数。把要向量化的函数传递给np.vectorize创建新函数。 如果函数是自定义的也可以使用python装饰器“自动”把函数向量化。装饰器是函数它们以其他函数为输入并修改其行为。
# 导入 numpy库
import numpy as np
# 自定义函数
# 此函数无法用于向量计算但可以用于单个值的计算
def avg_2_mod(x,y):当x不等于20时计算平均值if(x20):return np.NaNelse:return (xy)/2# np.vectorize创建向量化函数
avg_2_mod_vecnp.vectorize(avg_2_mod)
print(avg_2_mod_vec(df[a],df[b]))# 装饰器
# 为了使用vectorize装饰器要在函数定义之前使用符号
np.vectorize
def v_avg_2_mod(x,y):当x不等于20时计算平均值和前面一样但这里使用vectorize装饰器if x20:return np.nanelse:return (xy)/2
# 可以直接使用此向量化的函数
print(v_avg_2_mod(df[a],df[b]))
2、lambda函数 有时apply方法中使用的函数非常简单无须单独创建。 编写lambda函数需要使用lambda关键字。由于apply函数会把整行或整列作为第一个参数传递过来所以lambda函数只有一个参数x。然后可以直接编写函数而不必定义它而且结果结果会自动返回。 虽然可以编写复杂的lambda函数但通常只在需要单行计算时才会使用lambda函数。如果lambda函数中包含过多代码会难以阅读。
import re
docspd.read_csv(r...\data\doctors.csv,headerNone)
pre.compile(\w\s\w)# 方法1先编写一个函数在调用apply应用它
# 自定义函数
def get_name(s):return p.match(s).group()
docs[name_func]docs[0].apply(get_name)
print(docs)# 方法2直接用lambda函数
docs[name_lamb]docs[0].apply(lambda x: p.match(x).group())
print(docs)