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

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

每种数据类型在pandas.core.internals模块中都有一个特定的类。pandas使用ObjectBlock类来表示包含字符串列的数据块,用FloatBlock类来表示包含浮点型列的数据块。...对于包含数值型数据(比如整型和浮点型)的数据块,pandas会合并这些列,并把它们存储为一个Numpy数组(ndarray)。Numpy数组是在C数组的基础上创建的,其值在内存中是连续存储的。...这对我们原始dataframe的影响有限,这是由于它只包含很少的整型列。 同理,我们再对浮点型列进行相应处理: 我们可以看到所有的浮点型列都从float64转换为float32,内存用量减少50%。...余下的大部分优化将针对object类型进行。 在这之前,我们先来研究下与数值型相比,pandas如何存储字符串。...总结 我们学习了pandas如何存储不同的数据类型,并利用学到的知识将我们的pandas dataframe的内存用量降低了近90%,仅仅只用了一点简单的技巧: 将数值型列降级到更高效的类型 将字符串列转换为类别类型

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

    python学习笔记第三天:python之numpy篇!

    先上例子: 这里我们生成了一个一维数组a,从0开始,步长为1,长度为20。Python中的计数是从0开始的,R和Matlab的使用者需要小心。...三、创建数组 数组的创建可通过转换列表实现,高维数组可通过转换嵌套列表实现: 一些特殊的数组有特别定制的命令生成,如4*5的全零矩阵: 默认生成的类型是浮点型,可以通过指定类型改为整型: [0, 1)...,在处理中Python会自动将整数转换为浮点数(因为数组是同质的),并且,两个二维数组相加要求各维度大小相同。...下面这个例子是将第一列大于5的元素(10和15)对应的第三列元素(12和17)取出来: 可使用where函数查找特定值在数组中的位置: 六、数组操作 还是拿矩阵(或二维数组)作为例子,首先来看矩阵转置:...nan_to_num可用来将nan替换成0,在后面会介绍到的更高级的模块pandas时,我们将看到pandas提供能指定nan替换值的函数。

    2.7K50

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

    为了更好地理解如何减少内存用量,让我们看看 pandas 是如何将数据存储在内存中的。...但这对我们原有 dataframe 的影响并不大,因为其中的整型列非常少。 让我们对其中的浮点型列进行一样的操作。...compare_floats.columns = ['before','after'] compare_floats.apply(pd.Series.value_counts) 100.99 MB 50.49 MB 我们可以看到浮点型列的数据类型从...pandas 使用一个单独的映射词典将这些整型值映射到原始值。只要当一个列包含有限的值的集合时,这种方法就很有用。...这一列没有任何缺失值,但就算有,category 子类型也能处理,只需将其设置为 -1 即可。 最后,让我们看看在将这一列转换为 category 类型前后的内存用量对比。

    3.7K20

    教程 | 简单实用的pandas技巧:如何将内存占用降低90%

    为了更好地理解如何减少内存用量,让我们看看 pandas 是如何将数据存储在内存中的。...我们可以看到内存用量从 7.9 MB 下降到了 1.5 MB,降低了 80% 以上。但这对我们原有 dataframe 的影响并不大,因为其中的整型列非常少。 让我们对其中的浮点型列进行一样的操作。...我们可以看到浮点型列的数据类型从 float64 变成了 float32,让内存用量降低了 50%。...pandas 使用一个单独的映射词典将这些整型值映射到原始值。只要当一个列包含有限的值的集合时,这种方法就很有用。...这一列没有任何缺失值,但就算有,category 子类型也能处理,只需将其设置为 -1 即可。 最后,让我们看看在将这一列转换为 category 类型前后的内存用量对比。

    3.9K100

    资源 | 23种Pandas核心操作,你需要过一遍吗?

    选自 Medium 作者:George Seif 机器之心编译 参与:思源 本文转自机器之心,转载需授权 Pandas 是一个 Python 软件库,它提供了大量能使我们快速便捷地处理数据的函数和方法...一般而言,Pandas 是使 Python 成为强大而高效的数据分析环境的重要因素之一。...在本文中,作者从基本数据集读写、数据处理和 DataFrame 操作三个角度展示了 23 个 Pandas 核心方法。...(12)将目标类型转换为浮点型 pd.to_numeric(df["feature_name"], errors='coerce') 将目标类型转化为数值从而进一步执行计算,在这个案例中为字符串。...以下代码将过滤名为「size」的行,并仅显示值等于 5 的行: df[df["size"] == 5] (23)选定特定的值 以下代码将选定「size」列、第一行的值: df.loc([0], ['size

    2.9K20

    Stata与Python等效操作与调用

    本文主要包括两部分: Stata 和 Python 的等效操作,降低从 Stata 到 Python 的学习跨度和门槛。...另一个重要的区别是 np.nan 是浮点数据类型,因此 DataFrame 的任何列包含缺失数字的将是浮点型的。如果一列整型数据改变了,即使只有一行 np.nan ,整列将被转换为浮点型。...从 2020 年 1 月 1 日开始,Python 2.x 已经停止维护。如果是刚接触 Python ,建议直接学习 Python 3.x 。...2.1.1 Python 安装 如果电脑上还未安装 Python ,可以从 Python 官网[4] 或者 Anaconda[5] 进行下载安装。...其中,交互式分为窗口交互和代码内嵌(代码内嵌是指在 do-file 或 ado-file 中嵌入 Python 代码),两种方式都是遇见特定指令进入和退出环境;脚本式则是指运行 Python 脚本。

    10K51

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

    pandas 自动获取数据类型:77个浮点数,6个整数,78个对象。内存使用量为 861.8 MB。 因此我们能更好的理解减少内存的使用,下面看看pandas 是如何在内存中存储数据的。...pandas.core.internals 中每种数据类型都有一个特定类。ObjectBlock 类呈现字符串;FloatBlock 类呈现浮点数;。...实际上,object列的元素是存储在内存中真实值的指针。 下图展示了数值类型如何以Numpy数据存储以及如何以python内置类型存储字符串: ? 你可能注意到了,object 使用的是可变大小内存。...“对象”优化 v0.15开始,pandas 引入了 Categoricals。在低层,category 类型使用整型表示列中的值,而不是原始值。pandas 使用单独的字典来映射原始值和这些整数。...从上述数据中可以看到,一些列的数据只包含很少的唯一值,也就是说大多数值都是重复的。 先选择一列,看看将其转换为类别类型之后会如何。使用 day_of_week 列数据,只包含了7个唯一值。

    6.3K30

    Pandas 高性能优化小技巧

    在底层的设计中,pandas按照数据类型将列分组形成数据块(blocks)。pandas使用ObjectBlock类来表示包含字符串列的数据块,用FloatBlock类来表示包含浮点型列的数据块。...对于包含数值型数据(比如整型和浮点型)的数据块,pandas会合并这些列,并把它们存储为一个Numpy数组(ndarray)。Numpy数组是在C数组的基础上创建的,其值在内存中是连续存储的。...我们可以用函数pd.to_numeric()来对数值型进行向下类型转换。用DataFrame.select_dtypes来只选择特定类型列,然后我们优化这种类型,并比较内存使用量。...因为Python是一种高层、解析型语言,它没有提供很好的对内存中数据如何存储的细粒度控制。 这一限制导致了字符串以一种碎片化方式进行存储,消耗更多的内存,并且访问速度低下。...在object列中的每一个元素实际上都是存放内存中真实数据位置的指针。 category类型在底层使用整型数值来表示该列的值,而不是用原值。Pandas用一个字典来构建这些整型数据到原数据的映射关系。

    3K20

    独家 | Python处理海量数据集的三种方法

    通过优化数据类型来减少内存使用 当使用Pandas从文件里加载数据的时候,如果不提前设定,通常会自动推断数据类型。 多数情况下这没什么问题,但是推断的数据类型并不一定是最优的。...甚至,如果数值型列数据包括了缺失值,推断数据类型就会自动填充为浮点型。...在我处理大部分表征年、月或日的整型数据的时候,我最近通常会使用这种方法进行分析: 使用Pandas加载文件并明确数据类型(图片来自作者) 对于特定的案例,明确数据类型会让使用内存大大减少。...请注意上述例子中用到的pandas类型pandas.Int16Dtype来使包含缺失值的列数据强制转换成整型数据。...将数据分块 当数据太大以至于与内存不相符,你可以使用Pandas的chunksize选项来将数据集分块,而非处理一大整块数据。

    92530

    Python数据类型转换详解

    在这里总结一下Python的数据类型: 字符串类型 String 数字类型 Number: 整形 int 浮点型 float 复数 complex 布尔类型 Bool列 表类型 List 元组类型 Tuple...Python中的数据类型转换有两种,一种是自动类型转换,即Python在计算中会自动地将不同类型的数据转换为同类型数据来进行计算;另一种是强制类型转换,即需要我们基于不同的开发需求,强制地将一个数据类型转换为另一个数据类型...2.1 自动类型转换 当两个不同类型的数据进行运算时,结果会像更高精度进行计算,精度等级:布尔 整型 浮点型 < 复数。...print(a + b) # 11 ''' 在和数字运算时,True转为1,False转为0 ''' a = 10 b = 3.14 print(a + b) # 13.14 ''' 整型与浮点型运算时...,整型转化为浮点型,结果也为浮点型 ''' 2.2 强制类型转换 str( ):可以把其他类型数据转化为字符串类型 int( ):可以把其他类型数据转化为整型 float( ):可以把其他类型数据转化为浮点型

    24420

    图解NumPy:常用函数的内在机制

    arange 函数对类型很敏感:如果你以整型数作为参数输入,它会生成整型数;如果你输入浮点数(比如 arange(3.)),它会生成浮点数。...正如加减浮点数时整型数会被转换成浮点数一样,标量也会被转换成数组,这个过程在 NumPy 中被称为广播(broadcast)。...repeat: delete 可以删除特定的行和列: 删除的逆操作为插入,即 insert: append 函数就像 hstack 一样,不能自动对一维数组执行转置,因此同样地,要么需要改变该向量的形状...在 pandas 中执行它可能是更好的选择,因为在 pandas 中,该特定运算的可读性要高得多,也不那么容易出错: – pd.DataFrame(a).sort_values(by=[2,5]).to_numpy...concatenate 命令来堆叠图像会更方便一些,向一个 axis 参数输入明确的索引数值: 堆叠一般三维数组 如果你不习惯思考 axis 数,你可以将该数组转换成 hstack 等函数中硬编码的形式: 将数组转换为

    3.3K20

    图解NumPy:常用函数的内在机制

    arange 函数对类型很敏感:如果你以整型数作为参数输入,它会生成整型数;如果你输入浮点数(比如 arange(3.)),它会生成浮点数。...正如加减浮点数时整型数会被转换成浮点数一样,标量也会被转换成数组,这个过程在 NumPy 中被称为广播(broadcast)。...repeat: delete 可以删除特定的行和列: 删除的逆操作为插入,即 insert: append 函数就像 hstack 一样,不能自动对一维数组执行转置,因此同样地,要么需要改变该向量的形状...在 pandas 中执行它可能是更好的选择,因为在 pandas 中,该特定运算的可读性要高得多,也不那么容易出错: – pd.DataFrame(a).sort_values(by=[2,5]).to_numpy...concatenate 命令来堆叠图像会更方便一些,向一个 axis 参数输入明确的索引数值: 堆叠一般三维数组 如果你不习惯思考 axis 数,你可以将该数组转换成 hstack 等函数中硬编码的形式: 将数组转换为

    3.7K10

    媲美Pandas?Python的Datatable包怎么用?

    通过本文的介绍,你将学习到如何在大型数据集中使用 datatable 包进行数据处理,特别在数据量特别大的时候你可以发现它可能比 Pandas 更加强大。...() pandas_df = datatable_df.to_pandas() 下面,将 datatable 读取的数据帧转换为 Pandas dataframe 形式,并比较所需的时间,如下所示: %...注意:这里用颜色来指代数据的类型,其中红色表示字符串,绿色表示整型,而蓝色代表浮点型。...▌选择行/列的子集 下面的代码能够从整个数据集中筛选出所有行及 funded_amnt 列: datatable_df[:,'funded_amnt'] ?...▌删除行/列 下面展示如何删除 member_id 这一列的数据: del datatable_df[:, 'member_id'] ▌分组 (GroupBy) 与 Pandas 类似,datatable

    7.2K10

    媲美Pandas?一文入门Python的Datatable操作

    通过本文的介绍,你将学习到如何在大型数据集中使用 datatable 包进行数据处理,特别在数据量特别大的时候你可以发现它可能比 Pandas 更加强大。...() pandas_df = datatable_df.to_pandas() ‍下面,将 datatable 读取的数据帧转换为 Pandas dataframe 形式,并比较所需的时间,如下所示:...注意:这里用颜色来指代数据的类型,其中红色表示字符串,绿色表示整型,而蓝色代表浮点型。...▌选择行/列的子集 下面的代码能够从整个数据集中筛选出所有行及 funded_amnt 列: datatable_df[:,'funded_amnt'] ?...▌删除行/列 下面展示如何删除 member_id 这一列的数据: del datatable_df[:, 'member_id'] ▌分组 (GroupBy) 与 Pandas 类似,datatable

    7.7K50

    媲美Pandas?Python的Datatable包怎么用?

    通过本文的介绍,你将学习到如何在大型数据集中使用 datatable 包进行数据处理,特别在数据量特别大的时候你可以发现它可能比 Pandas 更加强大。...() pandas_df = datatable_df.to_pandas() 下面,将 datatable 读取的数据帧转换为 Pandas dataframe 形式,并比较所需的时间,如下所示: %...注意:这里用颜色来指代数据的类型,其中红色表示字符串,绿色表示整型,而蓝色代表浮点型。...▌选择行/列的子集 下面的代码能够从整个数据集中筛选出所有行及 funded_amnt 列: datatable_df[:,'funded_amnt'] ?...▌删除行/列 下面展示如何删除 member_id 这一列的数据: del datatable_df[:, 'member_id'] ▌分组 (GroupBy) 与 Pandas 类似,datatable

    6.7K30
    领券