栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

创建大型Pandas DataFrame:预分配vs追加vs concat

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建大型Pandas DataFrame:预分配vs追加vs concat

您的基准实际上太小,无法显示出真正的差异。追加,每次复制,因此您实际上是在复制大小为N的存储空间N
*(N-1)次。随着数据框大小的增加,这效率极低。在很小的框架内,这当然可能无关紧要。但是,如果您有任何实际尺寸,这很重要。这在此处的文档中特别指出,尽管有点警告。

In [97]: df = Dataframe(np.random.randn(100000,20))In [98]: df['B'] = 'foo'In [99]: df['C'] = pd.Timestamp('20130101')In [103]: df.info()<class 'pandas.core.frame.Dataframe'>Int64Index: 100000 entries, 0 to 99999Data columns (total 22 columns):0     100000 non-null float641     100000 non-null float642     100000 non-null float643     100000 non-null float644     100000 non-null float645     100000 non-null float646     100000 non-null float647     100000 non-null float648     100000 non-null float649     100000 non-null float6410    100000 non-null float6411    100000 non-null float6412    100000 non-null float6413    100000 non-null float6414    100000 non-null float6415    100000 non-null float6416    100000 non-null float6417    100000 non-null float6418    100000 non-null float6419    100000 non-null float64B     100000 non-null objectC     100000 non-null datetime64[ns]dtypes: datetime64[ns](1), float64(20), object(1)memory usage: 17.5+ MB

追加中

In [85]: def f1():   ....:     result = df   ....:     for i in range(9):   ....:         result = result.append(df)   ....:     return result   ....:

康卡特

In [86]: def f2():   ....:     result = []   ....:     for i in range(10):   ....:         result.append(df)   ....:     return pd.concat(result)   ....:In [100]: f1().equals(f2())Out[100]: TrueIn [101]: %timeit f1()1 loops, best of 3: 1.66 s per loopIn [102]: %timeit f2()1 loops, best of 3: 220 ms per loop

请注意,我什至都不会尝试预分配。它有些复杂,特别是因为您要处理多个dtypes(例如,您 可以
制作一个巨大的框架并且简单

.loc
并且可以工作)。但是
pd.concat
只是简单,可靠和快速。

并从上方选择尺寸

In [104]: df = Dataframe(np.random.randn(2500,40))In [105]: %timeit f1()10 loops, best of 3: 33.1 ms per loopIn [106]: %timeit f2()100 loops, best of 3: 4.23 ms per loop


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号