社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

Pandas比MySQL快?

Python大数据分析 • 3 周前 • 24 次点击  

知乎上有人问,处理百万级数据,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知识圈子

涵盖Python、爬虫、数据分析、大模型等十几门课程

以及专业老师VIP群指导


图片

· 推荐阅读 ·

我常用的一款免费爬虫软件,非常强大,值得推荐

学会这7个爬虫软件,三分钟搞定数据采集

AI数据爬虫神器!无脑采集Tiktok shop海量数据,附干货教程

新一代爬虫和web自动化神器,很实用!

web scraper无代码爬虫工具怎么入门?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182016
 
24 次点击