Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧越小,速度越快吗?_Python_Pandas_Dataframe - Fatal编程技术网

Python 数据帧越小,速度越快吗?

Python 数据帧越小,速度越快吗?,python,pandas,dataframe,Python,Pandas,Dataframe,我读了一篇文章(),其中提到它通过使数据帧更小(通过转换数据类型)使数据帧更快 更小(内存使用)和更快(cpu时间)之间是否存在关联 假设我有一个数据帧列int64。如果我们将其转换为int8,对列的操作会更快吗?e、 g.假设操作为d[col]=d[col]+1将数据类型从int64更改为int8可减少存储数据所需的位数。这将大大减少内存使用量,这在有大量数据进行密集计算时非常有用。这会在出现内存错误之前增加熊猫可能使用的数据大小 将对象类型列更改为特定类型也会提高性能,因为这样可以进行类型优

我读了一篇文章(),其中提到它通过使数据帧更小(通过转换数据类型)使数据帧更快

更小(内存使用)和更快(cpu时间)之间是否存在关联


假设我有一个数据帧列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)