pandas处理数据实在太慢了,先提一提pandas的速,再去找其他大数据分布式吧
numpy
之前用一步步手写python计算pearson系数,速度无比慢,其实stats已封装好如此经典的计算,直接调用即可。
一些统计的计算可参考官方文档
时间数据类型
dataframe的数据类型都是object,但数据量大了之后发现用dataframe还是很慢。
从csv读出的数据还是object类型,如果将时间格式转为datetiime格式,会提高效率。
df['date_time'] = pd.to_datetime(df['date_time'],format='%d/%m/%y %H:%M')
循环
如果增加一列是依赖另一列的,比如特征有开始和结束,我们想计算花费的时间
我用的比较多的是apply函数。
def func(st, ed):
return ed - st
df['cost'] = df.apply(lambda x: func(x['start], x['end']), axis = 1)
如果你使用.apply()获取10年的小时数据,那么你将需要大约15分钟的处理时间。
如果这个计算只是大型模型的一小部分,那么你真的应该加快速度。这也就是矢量化操作派上用场的地方。
矢量化的操作
.isin()