字典对于Dataframe的要求就像自行车对汽车的要求一样。您可以比骑车快10英尺,比起启动汽车,使齿轮换挡等更快速。但是,如果您需要走一英里,汽车就可以胜出。
对于某些小的目标目标,命令可能会更快。如果这就是您所需要的,那么请确定使用dict!但是,如果您需要/想要Dataframe的强大功能,那么dict是无可替代的。如果数据结构首先不能满足您的需求,那么比较速度是没有意义的。
现在,例如-更具体地讲-一个dict对于访问列是很好的,但是对访问行却不是那么方便。
import timeitsetup = '''import numpy, pandasdf = pandas.Dataframe(numpy.zeros(shape=[10, 1000]))dictionary = df.to_dict()'''# f = ['value = dictionary[5][5]', 'value = df.loc[5, 5]', 'value = df.iloc[5, 5]']f = ['value = [val[5] for col,val in dictionary.items()]', 'value = df.loc[5]', 'value = df.iloc[5]']for func in f: print(func) print(min(timeit.Timer(func, setup).repeat(3, 100000)))
产量
value = [val[5] for col,val in dictionary.iteritems()]25.5416321754value = df.loc[5]5.68071913719value = df.iloc[5]4.56006002426
因此,列表的dict检索行的速度比慢5倍
df.iloc。随着列数的增加,速度不足会变得更大。(列数就像自行车比喻中的脚数。距离越长,汽车就越方便…)
这只是列表的字典不如Dataframe方便/慢的一个例子。
另一个示例是当您为各行设置了DatetimeIndex并希望选择某些日期之间的所有行时。有了Dataframe,您可以使用
df.loc['2000-1-1':'2000-3-31']
如果要使用列表字典,则没有简单的模拟方法。与Dataframe相比,您需要用于选择正确行的Python循环将再次非常慢。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)