首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【文件读取】文件太大怎么办?

分块读 import pandas as pd reader = pd.read_csv(filename, iterator=True) # 每次读取size大小的块,返回的是dataframe...data = reader.get_chunk(size) 修改列的类型 改变每一列的类型,从而减少存储量 对于label或者类型不多的列(如性别,0,1,2),默认是int64的,可以将列的类型转换为...int8 对于浮点数,默认是float64,可以转换为float32 对于类别型的列,比如商品ID,可以将其编码为category import pandas as pd reader = pd.read_csv...GB print(data.memory_usage().sum()/(1024**3)) # 将float64转变为float32 for i in range(6, 246): data[str...().sum()/(1024**3)) 原始大小:1.8328GB,转int8后:1.8263GB,转float32后:0.9323GB,转category后:0.9037GB 可以发现修改类型后,内存的消耗大幅缩减了

2.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【精心解读】用pandas处理大数据——节省90%内存消耗的小贴士

    pandas已经为我们自动检测了数据类型,其中包括83列数值型数据和78列对象型数据。对象型数据列用于字符串或包含混合数据类型的列。...Dataframe对象的内部表示 在底层,pandas会按照数据类型将列分组形成数据块(blocks)。...pandas中的许多数据类型具有多个子类型,它们可以使用较少的字节去表示不同数据,比如,float型就有float16、float32和float64这些子类型。...这对我们原始dataframe的影响有限,这是由于它只包含很少的整型列。 同理,我们再对浮点型列进行相应处理: 我们可以看到所有的浮点型列都从float64转换为float32,内存用量减少50%。...总结 我们学习了pandas如何存储不同的数据类型,并利用学到的知识将我们的pandas dataframe的内存用量降低了近90%,仅仅只用了一点简单的技巧: 将数值型列降级到更高效的类型 将字符串列转换为类别类型

    8.7K50

    Pandas高级数据处理:内存优化

    对于某些不需要高精度的数据,可以使用更小的类型如 int32 或 float32,甚至 int8 或 float16 来节省内存。2....使用对象类型存储字符串当使用 object 类型存储字符串时,每个字符串都会被单独存储,这会导致较大的内存开销。可以考虑使用 category 类型来存储重复出现的字符串,这样可以显著减少内存使用。...优化数据类型:如前所述,使用更小的数据类型。2. 数据类型转换错误在转换数据类型时,可能会遇到一些意外情况。例如,尝试将包含缺失值的列转换为整数类型会失败。...使用 category 类型对于包含大量重复字符串的列,使用 category 类型可以显著减少内存使用。...)# 转换为 category 类型df['Category'] = df['Category'].astype('category')# 查看内存使用情况print(df.info())四、总结Pandas

    11010

    pandas 处理大数据——如何节省超90%内存

    pandas 自动获取数据类型:77个浮点数,6个整数,78个对象。内存使用量为 861.8 MB。 因此我们能更好的理解减少内存的使用,下面看看pandas 是如何在内存中存储数据的。...NaN 77.0 float64 77.0 NaN 浮点类型从 float64转换位 float32,节省了50%左右的内存使用。...“对象”优化 v0.15开始,pandas 引入了 Categoricals。在低层,category 类型使用整型表示列中的值,而不是原始值。pandas 使用单独的字典来映射原始值和这些整数。...当每一列包含有限的数据时,这非常有用。当pandas转换一列为 category 类型时,pandas 会使用最节省空间的 int 子类型表示每一列的唯一值。 ?...从上述数据中可以看到,一些列的数据只包含很少的唯一值,也就是说大多数值都是重复的。 先选择一列,看看将其转换为类别类型之后会如何。使用 day_of_week 列数据,只包含了7个唯一值。

    6.4K30

    没错,这篇文章教你妙用Pandas轻松处理大规模数据

    对象列(object columns)主要用于存储字符串,包含混合数据类型。为了更好地了解怎样减少内存的使用量,让我们看看 Pandas 是如何将数据存储在内存中的。...Pandas 中的许多类型包含了多个子类型,因此可以使用较少的字节数来表示每个值。例如,float 类型就包含 float16、float32、float64 等子类型。...当我们将列转换为 category dtype 时,Pandas 使用了最省空间的 int 子类型,来表示一列中所有的唯一值。 想要知道我们可以怎样使用这种类型来减少内存使用量。...我们将编写一个循环程序,遍历每个对象列,检查其唯一值的数量是否小于 50%。如果是,那么我们就将这一列转换为 category 类型。...和之前的相比 在这种情况下,我们将所有对象列都转换为 category 类型,但是这种情况并不符合所有的数据集,因此务必确保事先进行过检查。

    3.7K40

    Stata与Python等效操作与调用

    long.unstack('time') 进行 reshape ,它使用索引 'time' 并创建一个新的它具有的每个唯一值的列。请注意,这些列现在具有多个级别,就像以前的索引一样。...这是标记索引和列的另一个理由。如果要访问这些列中的任何一列,则可以照常执行操作,使用元组在两个级别之间进行区分。...但是可以使用 DataFrame 的索引(行的等效列)来完成大多数(但不是全部)相同的任务。...另一个重要的区别是 np.nan 是浮点数据类型,因此 DataFrame 的任何列包含缺失数字的将是浮点型的。如果一列整型数据改变了,即使只有一行 np.nan ,整列将被转换为浮点型。...然而,要谨慎使用 golbal 选项,因为在同名的情况下,来自脚本对象会覆盖 (overwrite) __main__ 命令空间下的对象。

    10K51

    《Pandas 1.x Cookbook · 第二版》第03章 创建和持久化DataFrame

    使用dtype参数,将数据类型改为category。...process(chunk) 因为CSV文件不保存数据类型,Pandas需要推断每列的数据类型是什么。如果一列的值都是整数,并且没有缺失值,则Pandas将其认定为int64。...如果一列是数值类型,但不是整数,或存在缺失值,Pandas使用的是float64。这两种数据类型占用的内存比较大。...例如,如果所有数都在200以下,你可以使用一个小的数据类型,比如np.int16(或np.int8,如果都是正数)。 如果某列都是非数值类型,Pandas会将其转换为object类型。...object类型占用内存很多,因为它是将数据以Python字符串存储的,将类型改为category,可以大大节省空间,因为它对每个字符串只存储一次。 更多 如果价格使用int8,会导致丢失信息。

    1.3K30

    Pandas数据处理——渐进式学习1、Pandas入门基础

    Pandas数据处理——渐进式学习 ---- 目录 Pandas数据处理——渐进式学习 前言 Pandas介绍 Pandas 适用于处理以下类型的数据: 数据结构 为什么有多个数据结构?...查看列名 head查看 DataFrame 头部数据 tail查看 DataFrame 尾部数据 转Numpy数组 数据统计摘要describe函数 横纵坐标转换位置 反向排列列数据 获取列数据 使用[...Pandas 适用于处理以下类型的数据: 与 SQL 或 Excel 表类似的,含异构列的表格数据; 有序和无序(非固定频率)的时间序列数据; 带行列标签的矩阵数据,包括同构或异构型数据; 任意其它形式的观测...Pandas 就像一把万能瑞士军刀,下面仅列出了它的部分优势 : 处理浮点与非浮点数据里的缺失数据,表示为 NaN; 大小可变:插入或删除 DataFrame 等多维对象的列; 自动、显式数据对齐:显式地将对象与一组标签对齐...Pandas 数据结构就像是低维数据的容器。比如,DataFrame 是 Series 的容器,Series 则是标量的容器。使用这种方式,可以在容器中以字典的形式插入或删除对象。

    2.2K50

    TypeError: Object of type float32 is not JSON serializable

    以下是一些解决方法:方法一:将float32转换为float将float32类型的对象转换为Python的内置float类型是一个简单而有效的解决方法。...方法三:将数据类型转换为JSON可序列化的类型如果float32对象是数据结构(如列表或字典)中的一个元素,可以考虑将整个数据结构转换为JSON格式。...在转换过程中,可以使用上述方法对float32类型的对象进行递归转换。...通过将float32转换为float、使用自定义编码器,以及将整个数据结构转换为JSON,我们可以解决这个错误。选择合适的方法取决于具体情况和数据结构。希望本文对你在处理这个错误时有所帮助!...为了解决这个问题,需要将float32数据转换为JSON可序列化的数据类型,例如将float32转换为浮点数类型(float)或将其转换为字符串。

    87710

    Pandas 高性能优化小技巧

    但是很多新手在使用过程中会发现pandas的dataframe的性能并不是很高,而且有时候占用大量内存,并且总喜欢将罪名归于Python身上(lll¬ω¬),今天我这里给大家总结了在使用Pandas的一些技巧和代码优化方法...在底层的设计中,pandas按照数据类型将列分组形成数据块(blocks)。pandas使用ObjectBlock类来表示包含字符串列的数据块,用FloatBlock类来表示包含浮点型列的数据块。...pandas中的许多数据类型具有多个子类型,比如,float型就有float16、float32和float64子类型,分别使用了2、4、8个字节。...9851920 实验表明,float32比float64整好优化了一半内存 2.2 用category类型代替object类型 object类型用来表示用到了Python字符串对象的值,有一部分原因是...在object列中的每一个元素实际上都是存放内存中真实数据位置的指针。 category类型在底层使用整型数值来表示该列的值,而不是用原值。Pandas用一个字典来构建这些整型数据到原数据的映射关系。

    3.1K20

    Pandas使用技巧:如何将运行内存占用降低90%!

    pandas 中的许多类型都有多个子类型,这些子类型可以使用更少的字节来表示每个值。比如说 float 类型就包含 float16、float32 和 float64 子类型。...数值存储与字符串存储的比较 object 类型表示使用 Python 字符串对象的值,部分原因是 NumPy 不支持缺失(missing)字符串类型。...当我们将一列转换成 category dtype 时,pandas 就使用最节省空间的 int 子类型来表示该列中的所有不同值。...这一列没有任何缺失值,但就算有,category 子类型也能处理,只需将其设置为 -1 即可。 最后,让我们看看在将这一列转换为 category 类型前后的内存用量对比。...总结和下一步 我们已经了解了 pandas 使用不同数据类型的方法,然后我们使用这种知识将一个 pandas dataframe 的内存用量减少了近 90%,而且也仅使用了一些简单的技术: 将数值列向下转换成更高效的类型

    3.7K20

    Pandas 数据类型概述与转换实战

    对于 pandas 来说,它会在许多情况下自动推断出数据类型 尽管 pandas 已经自我推断的很好了,但在我们的数据分析过程中,可能仍然需要显式地将数据从一种类型转换为另一种类型。...本文将讨论基本的 pandas 数据类型(又名 dtypes ),它们如何映射到 python 和 numpy 数据类型,以及从一种 pandas 类型转换为另一种的方法 Pandas 数据类型 数据类型本质上是编程语言用来理解如何存储和操作数据的内部结构...例如 to_numeric() 或 to_datetime() 使用 astype() 函数 将 pandas 数据列转换为不同类型的最简单方法是使用 astype(),例如,要将 Customer Number...将数值转换为字符串对象 如果数据有非数字字符或者不是同质的,那么 astype() 将不是类型转换的好选择。...python 的字符串函数去除“$”和“,”,然后将值转换为浮点数 也许有人会建议使用 Decimal 类型的货币。

    2.5K20
    领券