当前位置: 首页 > news >正文

Pandas比MySQL快?

知乎上有人问,处理百万级数据,Python列表、Pandas、Mysql哪个更快?

Pands是Python中非常流行的数据处理库,拥有大量用户,所以拿它和Mysql对比也是情理之中。

实测来看,MySQL > Pandas > Python列表,而且MySQl远快于后两个,几乎是碾压。

这主要是数据库语言和编程语言的差异,其实是不同层面的东西。


Python列表和Pandas是基于内存操作的,百万级数据内存占用高,可能会溢出。

但Pandas算法更优,所以快于Python列表。

Pandas主要基于numpy向量化计算,而且像排序、聚合等算法优化的比较好,一般会比Python列表更快3倍以上。

如果内存占用大,Pandas可以分块读取,所以对于大数据比Python列表有更好的处理能力。

MySQL无疑是最快的,这一点相信写过SQL的人能感受到。

它的数据存储在磁盘,得益于索引和查询优化,而且有分页查询、多线程等,比Pandas和Python列表快很多。

举几个列子,分别是聚合、排序、复杂查询操作。

1、聚合操作(求和)

Python列表(分钟级)需要对嵌套列表进行if遍历,再求和,这非常慢。

Pandas(十秒级)可以用向量化计算来实现,比如df.groupby().sum()

Mysql(秒级)结合索引优化和聚合函数,使用select sum(…) from … group by…

2、排序操作

Python列表(分钟级)使用内置sort()和sorted()方法,时间复杂度高

Pandas(十秒级)使用pandassort_values方法实现,调用C底层算法,比较快

Mysql(秒级)通过索引直接读取B+树,非常快

3、复杂查询(多表+多条件)

Python列表(分钟级)加载全部数据到内存,且算法复杂

Pandas(十秒级)加载全部数据到内存,可以算法优化,但也不快

Mysql(秒级)通过索引和join方法优化,非常快

所以结论如下:

  • Python列表:适合万级以下小规模数据的处理
  • Pandas:适合百万左右中等数据规模的处理
  • Mysql:适合千万以上大规模数据的处理

对了,其实你在Python中可以使用mysql的,有一个专门的sdk接口-pymysql,可以支持python连接mysql,不管是查询、建表、插入数据等都可以实现。

相关文章:

  • 全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷三及详细答案解析
  • 计算机科技笔记: 容错计算机设计01 概述 教材书籍 课程安排 发展历史
  • 不止于观赏:3D 全景漫游的多元价值​
  • MySQL 8.0 OCP认证考试题库持续更新
  • 【AI论文】绝对零度:基于零数据的强化自博弈推理
  • SpringBoot快速入门WebSocket(​​JSR-356附Demo源码)
  • 移动端前端开发中常用的css
  • 如何处理oracle 12c DG归档日志缺失(gap)导致备库同步中断问题
  • Android Studio Gradle 中 只显示 Tasks 中没有 build 选项解决办法
  • linux动态占用cpu脚本、根据阈值增加占用或取消占用cpu的脚本、自动检测占用脚本状态、3脚本联合套用。
  • 【Python】PDF文件处理(PyPDF2、borb、fitz)
  • 数据结构和算法
  • 印度股票市场API对接文档
  • 如何通过grep 排除“INTEGER: 1”
  • 中级网络工程师知识点2
  • Don’t Mesh with Me 论文阅读 brep llm
  • 系统架构-面向服务架构(SOA)
  • 【嵌入式开发-SDIO】
  • ResNet残差神经网络的模型结构定义(pytorch实现)
  • 为什么 MySQL 用 B+ 树作为数据的索引,以及在 InnoDB 中数据库如何通过 B+ 树索引来存储数据以及查找数据
  • 体坛联播|曼联热刺会师欧联杯决赛,多哈世乒赛首日赛程出炉
  • 印度杰纳布河上游两座水电站均已重新开闸
  • 有人悬赏十万寻找“全国仅剩1只”的斑鳖,发帖者回应并证实
  • 跳水世界杯总决赛陈佳获得女子3米板冠军,陈艺文获得亚军
  • 体坛联播|拜仁遭绝平未能提前夺冠,刘翔钻石联赛纪录作古
  • “名额5分钟抢完”,一场花费上万元:越野赛凭什么这么火?