在数据分析领域,pandas是python数据分析基础工具,SQL是数据库最常用分析语言。二者有相通的地方,也有很大的语法不同,做起数据分析来,谁将更胜一筹呢?

做过业务开发、跟数据库打交道比较多的小伙伴,经常会提到”增删改查“操作,分别对应数据的增加、删除、修改、查询,这4个操作。

下面,我将从查、增、删、改四个维度,依次比对pandas和SQL的实现步骤,比较二者的优劣。

文末含获取Python源码文件方式!

【讲解视频】此文章同步讲解视频:

https://www.zhihu.com/zvideo/1463296616861536256

https://www.zhihu.com/zvideo/1468878502435385344

【准备数据】数据分析对象-B站top100排行榜数据

这里,我采用B站top100排行榜的数据,作为数据分析对象。

想学习如何爬取top100排行榜数据的小伙伴,请移步至:

https://www.zhihu.com/zvideo/1442441321721663488

爬取下来的数据,存到excel:

数据准备完毕,开始数据分析,pandas和SQL进行逐行比对!

一、查询

1.1 查询前3行

pandas查询前3行:

SQL查询前3行:

1.2 查询后3行

pandas查询后3行:

SQL查询后3行:

1.3 查询指定列

pandas方法1(中括号[]):

pandas方法2(loc):

pandas方法3(iloc):

【马哥小贴士】关于loc和iloc的说明:

loc:works on labels in the index.(通过"索引名"定位)

iloc:works on the positions in the index (so it only takes integers).(通过"索引值"定位)

SQL查询指定列:

1.4 按条件查询

pandas单条件查询:

SQL单条件查询:

pandas多条件查询(并且关系):

SQL多条件查询(并且关系AND):

pandas多条件查询(或者关系):

SQL多条件查询(或者关系OR):

二、增加

2.1 增加行

pandas方法1(append):

pandas方法2(loc):

pandas方法3(concat):

SQL增加一行:

SQL增加多行:

2.2 增加列

pandas方法1(中括号[]):

pandas方法2(insert):

SQL增加一列:

三、删除

3.1 删除行

pandas方法1(drop-行名):

pandas方法2(drop-行号):

pandas方法3(drop-删除特定条件的行):

SQL删除多行:

3.2 删除列

pandas方法1(drop):

pandas方法2(del):

SQL删除一列:

四、修改

4.1 pandas方法1(loc):

4.2 pandas方法2(iloc):

4.3 SQL修改一个值

4.4 SQL修改多个值

五、四种连接方法



待分析数据:

5.1 左连接(Left Join)

pandas左连接:

SQL左连接:

5.2 右连接(Right Join)

pandas右连接:

SQL右连接:

5.3 内连接(Inner Join)

pandas内连接1:

pandas内连接2:(注意!根据索引连接)

pandas内连接3:(注意!根据索引连接)

SQL内连接1:

SQL内连接2:

SQL内连接3:

5.4 外连接(Outer Join)

pandas外连接1:

pandas外连接2:

pandas外连接3:

SQL外连接:(注意:MySQL不支持全连接,通过UNION实现)

END:马哥经验总结

怎么选择用哪个工具(Pandas or SQL)

根据数据存储类型,选择用哪个

·如果数据存储在数据库里,直接用SQL分析,比较方便。

·如果数据存储在Excel,或者csv、txt等文本类数据,或者从网页爬取下的结构化数据,存储为pandas的DataFrame格式再分析,比较方便。

根据数据量、性能,选择用哪个

·大部分情况下,Pandas比SQL的运行性能更优。

"文无第一,武无第二 | 没有绝对的谁更好,只有更适合的分析场景!"


同步公号文章:https://mp.weixin.qq.com/s?__biz=MzU5MjQ2MzI0Nw==&mid=2247484154&idx=1&sn=c4f629b5bd1df12e3ea857284ce7d7f7&chksm=fe1e161ac9699f0c925713b6a679ccb28095e5b773f77b915ea01be1457a87bd71860bbe8b8b&token=928226833&lang=zh_CN#rd

【Pandas vs SQL】数据分析代码逐行比对,孰优孰劣?的更多相关文章

  1. 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

    一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...

  2. pandas 读写sql数据库

    如何从数据库中读取数据到DataFrame中? 使用pandas.io.sql模块中的sql.read_sql_query(sql_str,conn)和sql.read_sql_table(table ...

  3. C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例

    Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...

  4. 判断字符串中是否有SQL攻击代码

    判断一个输入框中是否有SQL攻击代码 public const string SQLSTR2 = @"exec|cast|convert|set|insert|select|delete|u ...

  5. 转:Excel导入SQL数据库完整代码

    Excel导入SQL数据库完整代码 protected void studentload_Click(object sender, EventArgs e) {//批量添加学生信息 SqlConnec ...

  6. SQL Server中Table字典数据的查询SQL示例代码

    SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...

  7. java 连接mysql 和sql server2008代码

    这两天用java分别连接mysql和sql server2008代码.刚開始都是有错.如今找到了在 自己机器上成功连接的代码: 1. mysql Class.forName("com.mys ...

  8. SQL Server代码的一种学习方法

    使用SQL Server Management Studio的操作过程中,界面上方都可以生成sql脚本代码. 如新建数据库时: CREATE DATABASE [db_New] ON PRIMARY ...

  9. Pandas与SQL比较

    由于许多潜在的Pandas用户对SQL有一定的了解,因此本文章旨在提供一些如何使用Pandas执行各种SQL操作的示例. import pandas as pd url = 'tips.csv' ti ...

随机推荐

  1. innodb和myisam

    在Mysql数据库中,常用的引擎主要就是2个:Innodb和MyIASM.这篇文章将主要介绍这两个引擎,以及该如何去选择引擎,最后在提一下这2种引擎所使用的数据结构是什么. 首先介绍一下Innodb引 ...

  2. List、Map、Set 三个接口存取元素时,各有什么特点?

    List 以特定索引来存取元素,可以有重复元素.Set 不能存放重复元素(用对象的 equals()方法来区分元素是否重复).Map 保存键值对(key-value pair)映射, 映射关系可以是一 ...

  3. 什么是 UML?

    UML 是统一建模语言(Unified Modeling Language)的缩写,它发表于 1997 年,综合了当时已经存在的面向对象的建模语言.方法和过程,是一个支持模型 化和软件系统开发的图形化 ...

  4. Altium Designer 设置多层方法及各层介绍

    因为PCB板子的层分类有很多,所以通过帮助大家能更好地理解PCB的结构,所以把我所知道的跟大家分享一下 1.PCB各层简介 1. Top Layer顶层布线层(顶层的走线) 2. Bottom Lay ...

  5. PCB布线总的原则

    转自张飞实战电子公众号 PCB布线总的原则 最短路径和减少干扰 PCB布线的总的流程大致如下: 1了解制造厂商的制造规范-线宽,线间距,过孔要求及层数要求: 2确定层数并定义各层的功能: 3设计布线规 ...

  6. javaweb图书管理系统之不同用户跳转不同页面

    关于分级自测题,我们知道该系统一共分为两个角色,一个是读者,一个是管理员,我们需要根据不同用户去到不同的页面,所以我们需要写一个登陆界面. 本文先写这个功能的实现,该功能主要在servlet里面实现. ...

  7. 论文阅读总结-Patient clustering improves efficiency of federated machine learning to predict mortality and hospital stay time using distributed electronic medical records

    一.论文提出的方法: 使用进入ICU前48h的用药特征作为预测因子预测重症监护患者的死亡率和ICU住院时间. 用到了联邦学习,自编码器,k-means聚类算法,社区检测. 数据集:从50家患者人数超过 ...

  8. leetcode1753. 移除石子的最大得分

    题目描述: 你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​.b 和 c​​​​​​ 的 三堆 石子. 每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分.当存在 两个或 ...

  9. 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

    问题描述:在使用python爬取斗鱼直播的数据时,使用str(读取到的字节,编码格式)进行解码时报错:'utf-8' codec can't decode byte 0x8b in position ...

  10. ThinkCMF[仿骑呗共享单车官网]

    学习Thinkcmf内容管理系统(Thinkphp3.2.3框架)时候,用来练手的,简单的模仿骑呗官网首页,并对后台管理做了点小修改. 安装: 下载地址:https://pan.baidu.com/s ...