用python快三个月了。一直没有做总结,没有总结就没有进步,趁着放假来总结一下。
1.碰到会重复利用的dataframe某列数据的筛选替换,不要写:
indu_concat.loc[indu_concat['chineseName']=='石油开采Ⅲ',1]='CI005001.WI'(用于行业代码和行业名称之间的转换)
而是应存一个dict文件,每次使用直接用这个文件map替换即可。
2.用rolling.apply(自定义函数)时候,自定义函数输入的格式为array或df都可以,但自定义函数要包括所有的情况:
def index_exponential_induction(array):
n=7
expo_induc=np.e**(-1/n)
result=0
for x in range(n):
if pd.isnull(array[x]):
result=None
break
else:
result=result+array[x]*(expo_induc**(n-x-1))
return result
一直报错,改好了之后的指数衰减函数,之前一直报错的原因就是因为有的数据是空值,函数里没有写空值怎么处理,就报错。
3.从数据库取数据到python的话,前置操作最好在sql里做好,不然一些冗余的行或列会拖慢pandas的效率
4.如果有一堆代码运行的很慢的话,可以计算其中每一行运行时间要多久,把运行时间久的那几行拿出来思考能不能进行改进
5.做一切事情,都该从数据出发,数据决定了每一步该怎么走。最后做出来的结果应该选一个小例子验证程序的结果是否正确
6.取数据的过程放在一个py文件里,数据处理和算因子的过程放到另一个py文件里,且最好拆分成很多个能重用的小函数,差不多范畴的函数放到一个类里,方便重用。