在 pandas 中指定 read_sql 的数据类型

2024-03-25

我想指定执行 pandas.read_sql 时返回的数据类型。我特别感兴趣的是节省内存并将浮点值返回为 np.float32 而不是 np.float64。我知道我可以随后使用 astype(np.float32) 进行转换,但这并不能解决初始查询中的大内存需求问题。在我的实际代码中,我将提取 8400 万行,而不是此处显示的 5 行。 pandas.read_csv 允许将 dtypes 指定为字典,但我认为无法使用 read_sql 来做到这一点。

我正在使用 MySQLdb 和 Python 2.7。

顺便说一句,read_sql 在运行时使用的内存似乎比最终 DataFrame 存储所需的内存要多得多(大约是 2 倍)。

In [70]: df=pd.read_sql('select ARP, ACP from train where seq < 5', connection)

In [71]: df
Out[71]: 
   ARP      ACP
0  1.17915  1.42595
1  1.10578  1.21369
2  1.35629  1.12693
3  1.56740  1.61847
4  1.28060  1.05935


In [72]: df.dtypes
Out[72]: 
ARP    float64
ACP    float64
dtype: object

你可以使用熊猫读sql查询 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql_query.html它允许您指定返回的数据类型(仅从 pandas 1.3 开始支持)。

pd.read_sql_query('select ARP, ACP from train where seq < 5', connection,
                  dtype={'ARP': np.float32, 'ACP': np.float32})

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas 中指定 read_sql 的数据类型 的相关文章

随机推荐

  • 通过 .net 发送短信

    全部 是否有通过 net 发送短信 SMS 的免费解决方案 也许是网络服务之类的 EDIT 我真正想要的是一个有信誉的在线服务的参考 我可以用它来发送短信 有没有人使用过这样的服务 如果是的话 你能给我一个建议 警告吗 EDIT 首先是免责
  • 使用聚合 OData 版本 4 对 Apply 的结果执行 OrderBy

    考虑我有一个像这样的 odata 查询 Sessions apply filter SomeColumn eq 1 groupby Application Name aggregate TotalLaunchesCount with sum
  • Android 数字键盘上的“下一步”按钮

    我想知道如何使用 Jquery 检测 Android 数字键盘上的 下一步 按钮事件 请给我解决方案如何触发该按钮事件 您可以检测到next通过在 JQuery 中使用以下绑定来按下键盘 input on keydown function
  • Node.js POST 导致 [错误:套接字挂起] 代码:'ECONNRESET'

    我创建了一个示例来将数据发布到休息服务 我发现当我有非 ASCII 或非拉丁字符时 请参阅 data firstName 我使用 TEST REST js 的发布请求将抛出 错误 错误 套接字挂起 代码 ECONNRESET TEST RE
  • 如何用省略号删除右侧的多余空间

    我想用省略号类删除右侧的额外空间 ellipsis white space nowrap overflow hidden text overflow ellipsis max width 90px div float left clear
  • 如何在 Python 中检查空 gzip 文件

    我不想使用操作系统命令 因为这使得它依赖于操作系统 这可以在tarfile tarfile is tarfile filename 检查文件是否为 tar 文件 我在中找不到任何相关命令gzip module EDIT 为什么我需要这个 我
  • 如何使Spring缓存中的缓存名称可配置?

    我们使用 Spring 缓存框架进行缓存 并且希望能够支持多个缓存命名空间 例如 book 或 isbn 并且缓存命名空间是可配置的 而不是硬编码在类中 例如具有 Cacheable book isbn public Book findBo
  • JavaScript:内联函数与预定义函数

    任何人都可以向我提出一些关于使用的论据吗内联函数反对通过预定义函数给一些处理程序的名字 IE 哪个更好 function setTimeout function some code here 5 versus function functi
  • Android 2.2异常处理,catch参数null

    我想知道是否有人遇到奇怪的行为 我有 try catch 块 其中 catch 语句分配一个异常变量以使我能够正确处理异常 我得到的是 catch Exception ex 语句中的 ex null 请问我做错了什么 public clas
  • 如何读取用逗号分割的 CSV 文件,除非它是字段的一部分[重复]

    这个问题在这里已经有答案了 我有以下 C 代码 它读取 CSV 文件 目标是将其保存到 SQL 表中 StreamReader sr new StreamReader tbCSVFileLocation Text ToString stri
  • 在 google Drive api 的根目录中创建文件夹并将文件上传到该文件夹

    我想使用 CURL 在 google 驱动器根目录中创建文件夹 文件已上传到驱动器 但我需要创建一个文件夹并将文件上传到该文件夹 根据 hanshenrik 代码 创建文件夹正在工作 移动文件不起作用 我更新的代码 REDIRECT URI
  • 将列与 t-sql 中的值列表进行比较

    我正在页面上显示记录 并且我需要一种方法让用户选择要在另一个页面上显示的记录的子集 这些记录不存储在任何地方 而是动态生成的 在 sql 中说明 uniqueid 位于此 id 列表中而不是表等中的位置的最佳方法是什么 我知道我可以使用一堆
  • 模板化类专门化,其中模板参数是模板

    我想知道类似的事情是否可能 基本上 我有一个模板类 它偶尔会采用模板类的对象 我想将它 或只是一个成员函数 专门用于特定的模板类 但该类的 通用 形式 template
  • 如何在 C# 中关闭*多显示*?

    关于 如何在c 中关闭显示器 的文章有很多 但都是关闭所有显示器 有没有可能的方法来关闭特定的监视器 一些研究引导我来到这里 http www codeguru com forum showthread php p 1011720 post
  • 专有的 Haskell 库

    我对 Haskell 有点陌生 已经在业余项目中使用它几个月了 我想编写一个 C 库的 Haskell 接口 所有代码都是专有的 而不是开源的 所以我的问题是 如果我最终将其分发给客户并且不想提供源代码 而是提供诸如共享库之类的东西怎么办
  • 如何在未迁移到Androidx的项目中使用Androidx库

    我目前的项目还是比较稳定的 目前我不想迁移到 Androidx 但我需要用这个com pierfrancescosoffritti androidyoutubeplayer core 10 0 3我的项目中的图书馆 已迁移至 Android
  • 使 IE 中的内容不可选择

    这是我用 JS 写的图表 http jsfiddle net 49FVb http jsfiddle net 49FVb The css moz user select none khtml user select none 在 Chrom
  • Cassandra 3.9 和 CQL 规范版本

    只是好奇 Cassandra 3 9 支持哪些版本的 cql 我知道Cassandra 3 9支持cql 3 4 2 但是3 4 3是否也支持 以及如何升级 配置 Cassandra 3 9 以使用 cql 3 4 3 我在网上搜索了一下
  • 使用 C++ 连接到 MySQL 服务器

    我正在尝试使用 C 和 Visual C 2008 Express Edition 上的 MySQL ODBC 5 1 驱动程序连接到 MySQL 服务器 我按照 MSDN 中的这些说明进行操作 SQL连接 http msdn micros
  • 在 pandas 中指定 read_sql 的数据类型

    我想指定执行 pandas read sql 时返回的数据类型 我特别感兴趣的是节省内存并将浮点值返回为 np float32 而不是 np float64 我知道我可以随后使用 astype np float32 进行转换 但这并不能解决