自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 numba:@vectorize和@guvectorize函数装饰器的官方使用说明

虽然 vectorize() 允许你编写一次处理一个元素的 ufuncs,但 guvectorize() 装饰器则更进一步,允许你编写可以处理输入数组中任意数量元素的 ufuncs,并且可以接受和返回不同维度的数组。懒惰模式(Lazy),或称调用时编译:当不提供任何类型签名时,装饰器会生成一个 Numba 动态通用函数(DUFunc),该函数在使用先前未支持的输入类型调用时动态编译新的内核。(n),()->(n)如果这是一个普通的函数,我们会看到一个异常,提示 ufunc 无法处理给定的输入类型。

2025-02-25 10:15:07 948

原创 os 模块中常用的命令和功能

os模块提供了丰富的功能,用于与操作系统进行交互。以上列出的是一些常用的命令和功能,可以帮助你在 Python 中进行文件和目录操作、环境变量管理、进程管理和路径操作。希望这些示例能帮助你更好地理解和使用os模块。如果有任何其他问题,请随时提问。

2024-10-21 15:41:44 237

原创 在Polars中,为什么不建议使用方括号来选择行和列

使用方括号进行选择可能会导致性能下降,因为这涉及到额外的操作和潜在的数据复制。这可能会导致代码中出现意外的行为,特别是当你期望得到一个 DataFrame 但实际得到的是一个 Series 时。Polars 的设计鼓励使用显式的函数调用来执行操作,这样可以更容易地追踪代码中的数据流动,并有助于避免潜在的错误。总的来说,虽然方括号选择在某些情况下仍然可用,但对于更高效和更易维护的代码,Polars 推荐使用。使用这些专门的方法可以避免不必要的数据复制,并且可以使代码更易于理解和维护。等方法来选择列和行。

2024-08-17 09:21:30 437

原创 Polars简明基础教程十五:配置Polars库/环境

但是,请注意,在程序开始执行之前设置环境变量通常是更常见的做法,因为某些库(包括Polars)可能在其初始化时读取环境变量,并在整个会话期间保持这些值不变。但是,请注意,直接修改环境变量可能会影响程序的其他部分,以及在同一环境中运行的其他程序。并且,我们可以在未来的会话中使用pl.Config.load_to_file来重新加载这些配置。以类似的方式,我们可以使用set_fmt_str_lengths来设置字符串中打印的字符数。例如,我们可以使用set_tbl_rows来设置打印在表格中的行数。

2024-08-16 15:22:04 1206

原创 程序员如何平衡日常编码工作与提升式学习?

番茄工作法是一种简单有效的时间管理方法,其核心在于将工作时间划分为若干个25分钟的时间块(称为一个“番茄”),每个时间块后休息5分钟。时间块规划是一种更加灵活的时间管理方法,它允许我们根据自己的工作习惯和任务特点,将一天的时间划分为若干个时间块,并为每个时间块分配具体的任务。通过培养高效编码习惯、掌握时间管理技巧以及采取合理的平衡策略,我们可以在繁忙的工作中找到时间进行提升式学习,促进个人职业成长和发展。这些目标可以是短期的(如掌握一门新语言的基础语法),也可以是长期的(如深入理解某个框架的底层原理)。

2024-08-16 07:31:02 511

原创 Polars简明基础教程十四:可视化(四)

这意味着,当你的朋友(可视化库)想要看你的东西(数据)时,只需要按照通用钥匙(数据帧互换协议)的方式来操作,而不用关心你是用的哪种储物箱(数据帧库)。想象一下,你有很多不同类型的储物箱(在这里比喻为不同的数据帧库,如 Pandas、Polars、Dask 等),每种储物箱都有自己的独特之处,比如有的储物箱容量大、有的开合速度快、有的防水防尘。简而言之,数据帧互换协议就像是一座桥梁,连接了数据帧库和可视化库,使得数据的可视化过程更加顺畅和高效,而无需为每一个库的特定细节操心。

2024-08-15 22:16:38 1249

原创 Polars简明基础教程十三:可视化(三)

(示例中用到的csv数据文件可在我们可以从表达式中制作直方图或者从Series中。在这个例子中,我们设置了箱体的数量我们还可以直接将Polars的DataFrame传递给外部库。我们可以直接将passenger_class_counts_df的列传递给Matplotlib有时会遇到这个图表和下面的Seaborn图表无法渲染的问题,可以尝试增加“plt.show()”方法试试。请注意,在Polars中pclass列是一个整数列,但图表中的x轴是浮点轴。为了使x轴显示为分类整数轴,我们将整数转换为字符串。

2024-08-15 15:29:41 1174

原创 Polars简明基础教程十二:可视化(二)

我们可以使用 hv.extension 更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。注释:hvPlot 利用 HoloViews 库来构建图表,并且可以使用多个后端进行渲染,包括 Bokeh(默认)和 Matplotlib。是一个函数,用于设置 hvPlot 的绘图后端。当你使用指定一个后端时,比如 Bokeh 或 Matplotlib,hvPlot 将会使用这个后端来渲染所有后续的图表。

2024-08-14 17:40:04 1273

原创 Polars简明基础教程十一:可视化(一)

在 Polars 中,hvPlot 的功能已经被内化了,用户可以直接在 Polars DataFrame 上调用 hvPlot 的方法来创建图表,无需像以前那样先将数据转换为 Pandas DataFrame 或者单独使用 hvPlot 的函数。它通过在服务器端执行更多的数据处理和渲染工作,从而减轻客户端浏览器的负担,使图表响应更快、更流畅。在这个例子中,我们根据乘客等级(pclass)的颜色进行散点图绘制,以年龄(age)为横坐标,票价(fare)为纵坐标,并控制图表的宽度。

2024-08-14 10:02:17 1399

原创 Polars简明基础教程十:Numpy和Pandas的相互转换(2)

也就是说,如果您已经安装了最新版本的Pandas库,那么您可以直接在一个Polars的DataFrame对象上调用Pandas的DataFrame构造函数(即pd.DataFrame()),以将Polars的DataFrame转换为Pandas的DataFrame。这时意味着当将Polars的DataFrame转换为Pandas的DataFrame时,如果没有使用PyArrow作为底层支持,Pandas的DataFrame将使用其标准的数据类型(dtypes)来表示数据,而不是PyArrow的数据类型。

2024-08-13 22:29:14 1257

原创 Polars简明基础教程九:Numpy和Pandas的相互转换(1)

这样做的好处是减少了内存的使用,并可能提高了数据处理的效率,因为避免了不必要的数据复制。如果我们想确保转换为Numpy是零拷贝的,并且在需要复制时引发Exception,我们可以使用allow_copy参数。如果我们有一个一维的Numpy数组,我们可以使用零拷贝的方式创建一个Polars Series或DataFrame。这将克隆(复制)数据。在某些情况下,我们可以将Series转换为Numpy而无需复制(“零拷贝”)。在零拷贝转换中,Numpy数组是只读的,因此我们无法更改Numpy数组中的值。

2024-08-13 22:11:42 831

原创 如何高效记录并整理编程学习笔记—笔记工具选择?

在编程学习的海洋中,高效的笔记记录和整理方法就像一张珍贵的航海图,能够帮助我们在浩瀚的知识中找到方向。不同的笔记工具在功能、易用性、跨平台支持等方面各有千秋,因此需要根据个人需求和习惯来选择。以下是一些适合编程学习的笔记工具及其优缺点分析。功能全面:支持文字、图片、表格、代码块等多种元素,且支持标签、搜索、分享等功能。适用场景: 适合需要记录复杂笔记、管理多个笔记文件、与他人协作时使用。功能单一:主要面向代码编辑,对于笔记管理、搜索等功能支持较弱。格式丰富:支持文字加粗、斜体、链接、图片、表格等多种格式。

2024-08-12 17:36:11 367

原创 Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

我们还可以使用to_series从单列的DataFrame中创建一个Series(我们将在本课程的下一节中进一步学习select方法)Series中的名称应为groups。通过将这些作为Python dict传递给pl.DataFrame来创建一个DataFrame。在“选择列和转换DataFrame”部分中,我们将看到如何从列表中向DataFrame添加列。我们可以使用to_frame将Series转换为单列的DataFrame。在练习中,我们将看到如何从dict中创建一个DataFrame。

2024-08-12 14:58:46 1616

原创 Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A

polars

2024-08-12 11:28:22 1817

原创 Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”

我们可以将Polars DataFrame视为一个轻量级对象,它指向轻量级的Arrow表,该表又指向重量级的Arrow数组(重量级是因为它们持有实际数据)。在这个示例中,我们更改了第一行中的第一个值,我们可以看到对新的DataFrame的更改不会影响旧的DataFrame。Arrow的设计优化了对一维列的操作,而Numpy的设计优化了对多维数组的操作。这有助于减少数据传输过程中的开销。尽管新的和旧的DataFrame最初指向相同的Arrow表,但我们不需要担心对其中一个所做的更改会影响另一个。

2024-08-10 17:29:55 761

原创 Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”

pl.Int32 与 pl.Float32 -> pl.Float64(遵循Numpy的约定,整数和浮点数组合时,转换为浮点数类型,并尽量扩展至更大的位宽)是 Polars 中的一种抽象类型,它能够表示一个 Series 中可能存在的多种具体类型。- 任何dtype 与 pl.Utf8 -> pl.Utf8(任何数据类型都可以转换为字符串类型,因此任何列都可以被转换为Utf8类型)- pl.Int64 与 pl.Boolean -> pl.Boolean(整数与布尔值的组合通常导致布尔值类型)

2024-08-10 16:34:13 968

原创 Polars简明基础教程四:懒惰模式 2:评估查询

在这篇博客文章中,我建议对于许多用例,打开流式模式可能是一个好的默认设置(这就是我在我的机器学习管道中所做的)默认情况下,当我们评估一个 “LazyFrame ”时,Polars 会将整个 “DataFrame ”加载到内存中。我们可能希望保存查询中的中间值。因此,我们在转换回惰性模式之前触发评估以创建一个可以保存的 DataFrame。在某些情况下,我们有一个 DataFrame 并希望将其转换为 LazyFrame。当我们触发评估时,我们将 LazyFrame 转换为 DataFrame。

2024-08-09 08:44:37 1193

原创 Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

在上面的SELECT块中,我们看到这些表达式是以__POLARS_CSER_X的形式调用的,其中均值表达式有一个代码,标准差表达式也有一个代码。我们可以看到,Polars已经识别出这些是在SELECT块中的三个表达式中相同的子表达式。在这里,我们会看到公共子表达式消除优化是如何工作的。通过公共子表达式消除,Polars识别出哪些相同的表达式被计算了多次,因此Polars会缓存第一次的输出以便重用。如果用户知道优化的存在、记得实现优化并且正确地实现了优化,大多数优化都可以通过用户在精心编写的查询中实现。

2024-08-09 08:03:44 806

原创 Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars的开发人员所说的“昂贵”实际上是指到达架构需要一些计算,并且随着查询计划的增长,这种计算所需的时间也会增长。然而,当我们尝试获取LazyFrame的架构时,会得到一个警告,指出这可能是一个昂贵的操作,因为Polars需要遍历查询计划的逻辑来确定最终的列和数据类型会是什么。我们通过在一个LazyFrame上调用collect方法将LazyFrame转换为一个DataFrame——这会根据查询计划处理你的数据。LazyFrame实际上是一个查询计划——一个关于Polars如何转换你的数据的计划。

2024-08-08 09:21:51 1251

原创 从 Pandas 到 Polars 四十六:使用Polars读取和写入S3数据

在OutputSerialization参数中,我们传递了一个包含一些参数的字典,以告诉它如何序列化返回的数据——在这种情况下是CSV文件。不幸的是,在编写本文时,唯一的输出序列化选项是CSV和JSON,因此即使您输入的是Parquet文件,您也不能返回Parquet文件。在InputSerialization参数中,我们传递了一个包含一些参数的字典,以告诉它如何读取我们的CSV文件。例如,我们告诉它文件有一个标题行,并且没有压缩。对于Parquet文件,我们可以在S3上扫描文件,并且只读取我们需要的行。

2024-08-08 08:59:59 1071

原创 从 Pandas 到 Polars 四十五:Polars、Altair 和 Vegafusion

在传统的Altair图表中,您将数据行提供给Altair,然后Altair(通过Vega-lite库)将这些数据传递给您的浏览器,浏览器使用Vega-lite将数据转换为可以渲染的HTML对象。但那些日子已经过去了。在这篇文章中,我们将探讨随着Altair 5的发布,我们如何可以使用Altair和Polars,以及VegaFusion如何帮助Altair扩展到更大的数据集。然而,对于像Polars这样的基于Arrow的库来说,Altair还处于早期阶段,您可能仍然会遇到一些奇怪的bug。

2024-08-07 08:27:43 726

原创 从 Pandas 到 Polars 四十四:Polars 和 数据可视化库Seaborn

为了避免不必要的复制,我建议使用select函数只复制你的图表所需的列的子集,例如df.select(["Age","Fare","Pclass"]).to_pandas()。然而,Seaborn的新界面给我留下了深刻印象,并且我很高兴地发现,Seaborn将直接接受Polars的DataFrame来进行许多图表绘制。在这篇文章中,我将探讨如何将Polars的DataFrame传递给Seaborn以进行一些高级图表的绘制,并分享一些使用Seaborn可视化Polars DataFrame的其他技巧。

2024-08-07 08:22:24 1026

原创 PEP 8 – Python 代码风格指南中文版(九)

虽然变量注解的语法(由PEP 526提出)在Python 3.6及以后的版本中得到了官方的支持,但是不论你使用的是哪个版本的Python,当你编写存根文件时,都应该优先使用这种变量注解的语法。这意味着,即使你的代码中包含了类型注解,Python解释器在运行代码时也不会因为这些注解而发出任何警告或错误消息,也不会因为注解而改变代码的执行方式。在PEP 484被接受之前,Python社区对于函数注解的风格可能并没有一个统一的规范,因为那时的注解主要是用来存放任意元数据的,而不仅仅是类型信息。

2024-08-06 12:01:33 1193

原创 PEP 8 – Python 代码风格指南中文版(八)

在Python中,try...finally语句用于执行一段代码,无论是否发生异常,finally子句中的代码都会被执行。如果在finally子句中使用了return、break或continue语句,并且这些语句会导致控制流跳出finally子句(例如,return会使函数返回,break会跳出最近的循环,continue会跳过当前循环的剩余部分并继续下一次迭代),那么任何在try块中抛出但尚未被捕获的异常,或者在try块和finally子句之间抛出的异常,都会被隐式地取消(即不会被传播到调用者)。

2024-08-06 08:34:01 1106

原创 PEP 8 – Python 代码风格指南中文版(七)

自定义Python异常时,推荐从Exception类继承而非BaseException,后者常用于不应被捕获的异常。设计异常层次结构时,应基于问题性质而非抛出位置,以便捕获异常的代码能准确理解并响应。命名异常类时,错误类应加“Error”后缀,非错误类则无需。同时,避免使用裸露的except子句,以提升代码清晰度和健壮性。此外,适当使用异常链,保留原始异常信息,有助于调试和记录复杂错误情况。

2024-08-05 15:15:10 1210

原创 PEP 8 – Python 代码风格指南中文版(六)

然而,当你将 lambda 表达式的结果(即函数对象)赋值给一个变量时,虽然这个变量现在引用了这个函数对象,但函数对象本身仍然保持匿名(在内部表示中,它可能仍然显示为 '')。虽然 lambda 表达式允许你将函数定义嵌入到更大的表达式中,但如果你只是将 lambda 表达式的结果赋值给一个变量(如 f = lambda x: x + 1),那么你就失去了 lambda 表达式的这一主要优势,因为此时你已经通过变量名 f 显式地引用了这个函数。这在回溯和一般的字符串表示中更为有用。

2024-08-05 09:37:58 934

原创 PEP 8 – Python 代码风格指南中文版(五)

在设计这样的类时,请小心明确决定哪些属性是公开的,哪些属性是子类API的一部分,以及哪些属性确实仅应由你的基类使用。除非它们是包含模块的API中明确记录的一部分(如os.path或包的__init__模块,该模块公开了来自子模块的功能),否则其他模块不得依赖对这些导入名称的间接访问。设计为通过from M import *使用的模块应使用__all__机制来防止导出全局变量,或者使用较旧的约定,即在全局变量名前加上下划线(你可能希望这样做来表示这些全局变量是“模块非公开的”)。模块名称应该简短,全部小写。

2024-08-03 16:30:43 1439

原创 PEP 8 – Python 代码风格指南中文版(四)

当尾随逗号是多余的时候,在使用版本控制系统时,或者当预期值列表、参数或导入项会随着时间的推移而扩展时,它们通常很有帮助。这种模式的做法是将每个值(等)放在一行上,并始终添加一个尾随逗号,然后在下一行添加闭合的括号/方括号/花括号。在Python中,这种风格通常被认为是不必要的,因为属性和方法名称都以对象作为前缀,而函数名称则以模块名称作为前缀。尾随逗号通常是可选的,但在创建一个只有一个元素的元组时是必须的。如果行内注释陈述的是显而易见的内容,那么它们是不必要的,并且实际上会分散注意力。

2024-08-03 10:06:37 924

原创 PEP 8 – Python 代码风格指南中文版(三)

对于模块级别的特殊变量,如__all__(用于指定当使用from module import *时应该导入哪些名称)、__author__(用于指定模块的作者)、__version__(用于指定模块的版本号)等,PEP 8建议将它们放置在模块文档字符串之后。因此,当你编写Python模块时,你应该首先放置文档字符串,然后是__future__导入(如果有的话),接着是模块级别的双下划线名称(如__all__、__author__、__version__等),最后是其他的导入语句和模块代码。

2024-08-02 22:15:08 746

原创 PEP 8 – Python 代码风格指南中文版(二)

通配符导入有一个例外的用例,那就是作为公共API的一部分重新发布内部接口(例如,用来自可选加速器模块的定义覆盖接口的纯Python实现,并且具体哪些定义将被覆盖是事先不知道的)。几十年来,推荐的风格是在二元运算符之后换行。推荐使用绝对导入,因为它们通常更容易阅读,并且在导入系统配置不正确(例如,当包内的一个目录意外地出现在sys.path中时)时,它们往往表现更好(或者至少能给出更好的错误信息)。然而,明确的相对导入是绝对导入的一个可接受的替代方案,尤其是在处理复杂的包布局时,使用绝对导入会过于冗长。

2024-08-02 08:47:43 727

原创 PEP 8 – Python 代码风格指南中文版(一)

续行应使用Python在括号、方括号和大括号内的隐式行连接,将包装的元素垂直对齐,或使用悬挂缩进[1]。这里提供的指南旨在提高代码的可读性,并使Python代码在广泛范围内保持一致。请参阅配套的信息性PEP,该PEP描述了Python C实现中C代码的风格指南。本文档和PEP 257(Docstring约定)改编自Guido最初的Python风格指南文章,并添加了Barry风格指南[2]中的一些内容。),加上一个空格,再加上一个左括号组成的组合,为随后多行条件语句的每一行创建了一个自然的4个空格缩进。

2024-08-01 23:20:24 704 2

原创 从 Pandas 到 Polars 四十三:处理大于内存限制的Parquet文件

sink_parquet的一个很好的用例是将一个或多个大型CSV文件转换为Parquet格式,这样处理数据会更快。现在,Polars具有sink_parquet方法,这意味着您可以将流式查询的输出写入Parquet文件。在这个例子中,我们以惰性模式处理一个大型Parquet文件,并使用sink_parquet将输出写入另一个Parquet文件。需要注意的是,Polars的流式处理并非适用于所有操作,因此如果您的查询不支持流式处理,您可能会遇到内存溢出异常。path: (str) 输出文件的路径。

2024-08-01 09:39:13 840

原创 在Polars中,pl.selectors和df.select方法在使用上有什么区别?

它们提供了一种更灵活的方式来选择满足特定条件的列,特别是在处理大量列或者需要根据某些条件选择列的情况下。在 Polars 中,selectors 和 df.select 方法都有助于选择 DataFrame 中的列,但它们的使用方式和目的略有不同。如果你需要选择满足特定条件的列,或者在列名未知的情况下选择列,方法用于选择 DataFrame 中的特定列,通常通过提供列名列表来指定需要选择的列。适用于选择满足特定条件的列,特别是在列名未知或列的数量很大时。来选择所有以 "price" 开头的列,并使用。

2024-07-31 11:58:31 913

原创 从 Pandas 到 Polars 四十二:在 AWS Lambda 环境中使用 Polars 来处理数据II:PyArrow

在最近的一篇文章中,我展示了如何使用smart_open库在AWS Lambda中使用Polars。在这个例子中,我们使用了PyArrow的dataset模块。在这一步中,PyArrow会在S3中找到Parquet文件并获取一些关键信息。在这个例子中,优化体现在仅从文件中读取id1和v1列。在以下示例中,我们对S3中的Parquet文件进行分组。有了这个模式,我们就可以在Polars的惰性模式下工作,并应用一些查询优化。在第二步中,我们会在Parquet文件上进行分组聚合操作。

2024-07-31 07:56:37 440

原创 从 Pandas 到 Polars 四十一:检查Polars的查询

方法是一个非常有用的工具,它允许你在执行一系列操作的过程中插入一个检查点,以查看 DataFrame 的状态。我们在下面的示例中可以看到这一点,我们在进行分组之前先进行了过滤。通过在过滤和分组之间添加inspect,我们可以在查询的该点处打印输出。在这种情况下,我们可以在查询中添加一个.inspect()的调用。通过在操作链中插入检查点,你可以观察 DataFrame 在各个阶段的状态,这在调试复杂查询时非常有用!都会打印当前 DataFrame 的状态,这有助于理解数据在每个阶段的状态。

2024-07-30 09:30:42 439

原创 从 Pandas 到 Polars 四十:使用Polars进行机器学习预处理(二)

我认为在未来一年里,我们会看到一个围绕Polars开发的优秀的机器学习预处理库。with_context的优势在于我们仍然保持在Polars中强大的惰性模式下,因此我们仍然可以利用诸如查询优化之类的功能。在机器学习预处理中,一个常见的步骤是将训练集的数据与测试集共享。例如,我们可能想用训练集中的值来填充测试集中的空值。实际上,我们总是在惰性模式下使用with_context,因为这就是Polars将查询的不同部分组合在一起的方式。在下面的示例中,我们在“Age”列中有一些空值。

2024-07-30 09:03:43 434

原创 从 Pandas 到 Polars 三十九:Polars 和 Matplotlib

退一步说,如果你只习惯使用pandas的数据进行绘图,那也可以使用polars的df.to_pandas()方法将数据转为pandas的格式,只不过在转换为 Pandas DataFrame 时,可能会有一些性能损失,特别是对于大型数据集。在下面的第一个示例中,我们可以看到北大西洋中爱尔兰波浪浮标测得的最大波浪高度(这只是一个片段,用于向您展示它的工作方式)。在第二个示例中,我们使用快速的 groupby_dynamic 方法对每个站点的波浪高度取3小时的平均值。我们是否也可以进行一些风暴追踪呢?

2024-07-29 11:41:40 344

原创 Polars简明基础教程一:Polars快速入门

在这个例子中,我们将添加一个列,其中包含每个舱位中乘客的最大年龄。在Python中(而不是特指Polars),当我们将代码包裹在括号中时,我们可以在新行上调用一个新方法——在这种情况下是select。在这里,我们看到一个使用表达式API的简单示例,其中我们在select语句中选择Pclass、Name和Age列(我们将在第3节中深入了解select语句)。表达式是一个函数,它接受一个Series(或DataFrame中的列)作为输入,并返回一个Series(或DataFrame中的列)。

2024-07-29 09:16:29 2429

原创 从 Pandas 到 Polars 三十八:Polars 的“瘦身”功能

因此,shrink_dtype() 可能会选择保持列的原始类型不变,或者选择一个能够安全存储当前数据的更小的类型。当你有一个 DataFrame,其某些列的数据类型比实际需要的更大(例如,如果一列中所有的整数都可以用一个更小的整数类型来表示)时,shrink_dtype 就可以派上用场。调用 shrink_dtype 表达式,它会根据列中的数据将列转换为需要最少内存量的 dtype。在上面来自API文档的示例中,Polars发现列“a”可以是8位,列“b”必须是64位,但列“c”可以是32位。

2024-07-27 20:34:24 459

原创 从 Pandas 到 Polars 三十七:在 AWS Lambda 环境中使用 Polars 来处理数据

因为Polars现在内置了对在eager模式和lazy模式下从云存储(如AWS S3)读取和写入的支持,我们通常可以在处理程序函数中编写标准的Polars语法。在Docker中进行这种操作的一个好处是,你可以在将Lambda函数部署到AWS之前,在本地对它们进行测试。我在我的研讨会上提到了这一点,并且我也会在未来的博客文章中讨论它。在这个示例的shell脚本中,当运行容器时,我将我的.aws文件夹挂载到容器中的.aws文件夹。我将在下面详细解释这一点。在实际的生产查询中,我强烈建议你锁定你的依赖项的版本。

2024-07-27 09:00:28 1041

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除