Python 数据帧越小,速度越快吗?
我读了一篇文章(),其中提到它通过使数据帧更小(通过转换数据类型)使数据帧更快 更小(内存使用)和更快(cpu时间)之间是否存在关联Python 数据帧越小,速度越快吗?,python,pandas,dataframe,Python,Pandas,Dataframe,我读了一篇文章(),其中提到它通过使数据帧更小(通过转换数据类型)使数据帧更快 更小(内存使用)和更快(cpu时间)之间是否存在关联 假设我有一个数据帧列int64。如果我们将其转换为int8,对列的操作会更快吗?e、 g.假设操作为d[col]=d[col]+1将数据类型从int64更改为int8可减少存储数据所需的位数。这将大大减少内存使用量,这在有大量数据进行密集计算时非常有用。这会在出现内存错误之前增加熊猫可能使用的数据大小 将对象类型列更改为特定类型也会提高性能,因为这样可以进行类型优
假设我有一个数据帧列int64。如果我们将其转换为int8,对列的操作会更快吗?e、 g.假设操作为
d[col]=d[col]+1
将数据类型从int64更改为int8可减少存储数据所需的位数。这将大大减少内存使用量,这在有大量数据进行密集计算时非常有用。这会在出现内存错误之前增加熊猫可能使用的数据大小
将对象类型列更改为特定类型也会提高性能,因为这样可以进行类型优化。为什么不测试它
int64数据类型
内存使用情况(在MiB中):
时间:
In [32]: %timeit df.agg(["min","max","mean"])
4.68 s ± 84.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [33]: %timeit df+1
818 ms ± 26 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [36]: %timeit df2.agg(["min","max","mean"])
2.4 s ± 222 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [37]: %timeit df2+1
170 ms ± 10.6 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
int8数据类型 内存使用情况(在MiB中): 时间:
In [32]: %timeit df.agg(["min","max","mean"])
4.68 s ± 84.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [33]: %timeit df+1
818 ms ± 26 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [36]: %timeit df2.agg(["min","max","mean"])
2.4 s ± 222 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [37]: %timeit df2+1
170 ms ± 10.6 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
“我看不出更小和更快之间有什么联系”是什么意思?请分享你所做的任何测量。@MadPhysician,很抱歉混淆了。我把措辞改成了。。。“小的和快的之间有什么联系吗?”“物理学家,我实际上做过一个实验。我创建了一个调用函数100000次的for循环。函数只是执行d[col]=d[col]+1。我观察到,如果数据类型是int16,它比Int64快。请显示您的results@MaxU我知道:)我只是想知道,因为我肯定不是熊猫队的专家,所以如果我说错了什么就好了谢谢你的实验!我确实做过测试,但我只是好奇为什么会这样。int8比int64@Denielll, ;-)
In [38]: df2.memory_usage().sum() / 1024**2
Out[38]: 95.36750793457031
In [36]: %timeit df2.agg(["min","max","mean"])
2.4 s ± 222 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [37]: %timeit df2+1
170 ms ± 10.6 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)