gpt4 book ai didi

python - Pandas 数据帧如何存储在内存中?

转载 作者:行者123 更新时间:2023-12-04 14:19:15 25 4
gpt4 key购买 nike

特别是,当我通过连接两个 Pandas Series 对象创建 DataFrame 时,Python 是创建一个新的内存位置并存储该系列的副本,还是只是创建对这两个系列的引用?

如果它只是引用,那么修改像 series.name = "new_name" 这样的系列会影响 DataFrame 的列名吗?

此外,从像 series = df['column_name'] 这样的 DataFrame 中获取一个序列需要 O(1) 时间还是 O(n) 时间?

最佳答案

快速测试表明成本在连接中,而不是在取消引用中。所以,BLUF,df['s1'] 是 O(1) 而 concat 是 O(n)。

从每个系列 1 个单项到每个系列 4000 万个项目,取消引用花费的时间相似,而连接时间似乎呈线性增加。

使用这个简单的代码:

def func(frange):

a1 = []
a2 = []
for x in numpy.arange(frange):
a1.append(x)
a2.append(-x)

s1 = pd.Series(a1, index=a1, name='s1')
s2 = pd.Series(a2, index=a1, name='s2')
cstart = time.perf_counter();
df = pd.concat([s1, s2], axis=1)
cend = time.perf_counter();

tstart = time.perf_counter();
for y in range(100):
series = df['s1']
series2 = df['s2']
tend = time.perf_counter();

print (frange, ',', cend-cstart,tend-tstart)

结果是:

enter image description here

关于python - Pandas 数据帧如何存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com