Pandas vs SQL全面对比

news2024/11/15 21:40:51

前一段时间给大家详解过 Pandas 的用法,今天再来分享下 Pandas 与 SQL 的对比。

Pandas 和 SQL 有很多相似之处,都是对二维表的数据进行查询、处理,都是数据分析中常用的工具。

对于只会 Pandas 或只会 SQL 的朋友,可以通过今天例子快速学会另一个。

1. 数据查询

首先,读取数据

javascript
复制代码
import pandas as pd
import numpy as np

tips = pd.read_csv('tips.csv')

在这里插入图片描述

tips

1.1 查询列

查询 total_billtip 两列

lua
复制代码
tips[["total_bill", "tip"]]

用 SQL 实现:

csharp
复制代码
select total_bill, tip
from tips;
1.2 增加列

查询结果中,新增一列tip_rate

css
复制代码
tips['tip_rate'] = tips["tip"] / tips["total_bill"]

用 SQL 实现:

csharp
复制代码
select *, tip/total_bill as tip_rate
from tips;
1.3 筛选条件

查询 time列等于Dinner并且tip列大于5的数据

css
复制代码
tips[(tips["time"] == "Dinner") & (tips["tip"] > 5.00)]

用 SQL 实现:

sql
复制代码
select *
from tips
where time = 'Dinner' and tip > 5.00;
2. 分组聚合

按照某列分组计数

python
复制代码
tips.groupby("sex").size()

'''
sex
Female     87
Male      157
dtype: int64
'''

用 SQL 实现:

csharp
复制代码
select sex, count(*)
from tips
group by sex;

按照多列聚合多个值

matlab
复制代码
tips.groupby(["smoker", "day"]).agg({"tip": [np.size, np.mean]})

用 SQL 实现:

sql
复制代码
select smoker, day, count(*), avg(tip)
from tips
group by smoker, day;
3. join

构造两个临时DataFrame

ini
复制代码
df1 = pd.DataFrame({"key": ["A", "B", "C", "D"], "value": np.random.randn(4)})
df2 = pd.DataFrame({"key": ["B", "D", "D", "E"], "value": np.random.randn(4)})

先用 Pandas 分别实现inner joinleft joinright joinfull join

ini
复制代码
# inner join
pd.merge(df1, df2, on="key")

# left join
pd.merge(df1, df2, on="key", how="left")

# inner join
pd.merge(df1, df2, on="key", how="right")

# inner join
pd.merge(df1, df2, on="key", how="outer")

用 SQL 分别实现:

vbnet
复制代码
# inner join
select *
from df1 inner join df2
on df1.key = df2.key;

# left join
select *
from df1 left join df2
on df1.key = df2.key;

# right join
select *
from df1 right join df2
on df1.key = df2.key;

# full join
select *
from df1 full join df2
on df1.key = df2.key;
4. union

将两个表纵向堆叠

css
复制代码
pd.concat([df1, df2])

用 SQL 实现:

sql
复制代码
select *
from df1

union all

SELECT *
from df2;

将两个表纵向堆叠并去重

scss
复制代码
pd.concat([df1, df2]).drop_duplicates()

用 SQL 实现:

sql
复制代码
select *
from df1

union

SELECT *
from df2;
5. 开窗

tipsday列取值相同的记录按照total_bill排序。

css
复制代码
(tips.assign(
        rn=tips.sort_values(["total_bill"], ascending=False)
        .groupby(["day"])
        .cumcount()
        + 1
    )
    .sort_values(["day", "rn"])
)

用 SQL 实现:

sql
复制代码
select
    *,
    row_number() over(partition by day order by total_bill desc) as rn
from tips t

day列取值相同的记录会被划分到同一个窗口内,并按照total_bill排序,窗口之间的数据互不影响,这类操作便被称为开窗

今天的内容就到这里啦。通过几个简单的实践案例大家可以直观感受下 Pandas 和 SQL 在数据处理上的相似之处。

题外话

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。


Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。

如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1063864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】

【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、选择控制方式-程控方式-RS2324、代码编写 4、熟悉协议-SCPI协议5、测试实验-测试指令(1)硬件连接(…

学习记忆——图像篇——记忆古诗词

《长歌行》 青青园中葵,朝露待日晞。 阳春布德泽,万物生光辉。 常恐秋节至,焜黄华叶衰。 百川东到海,何时复西归? 少壮不努力,老大徒伤悲!

wisemodel 始智AI - 小记

文章目录 关于 wisemodel 始智AI 关于 wisemodel 始智AI https://www.wisemodel.cn/home 旨在打造中国版 “HuggingFace” 该社区汇聚了清华 / 智谱 chatglm2-6B、Stable Diffusion V1.5、alphafold2、seamless m4t large 等模型,以及 shareGPT、ultrachat、moss-…

80%测试员被骗,关于jmeter 的一个弥天大谎!

jmeter是目前大家都喜欢用的一款性能测试工具,因为它小巧、简单易上手,所以很多人都愿意用它来做接口测试或者性能测试,因此,在目前企业中,使用各个jmeter的版本都有,其中以jmeter3.x、4.x的应该居多。 但是…

网络安全行业真的内卷了吗?网络安全就业必看

前言 有一个特别流行的词语叫做“内卷”: 城市内卷太严重了,年轻人不好找工作;教育内卷;考研内卷;当然还有计算机行业内卷…… 这里的内卷当然不是这个词原本的意思,而是“过剩”“饱和”的替代词。 按照…

c++ 学习 之 运算符重载 知识要点

我们要好好分清楚一些运算符的结果为 左值还是 右值 赋值与调用

5. Mysql卸载

Mysql卸载 已经成功安装mysql,没有必要卸载,卸载之后不一定再次会安装成功。 双击安装包 检查如下三个目录是否有mysql,有的话,删除掉即可(前提,电脑只有Mysql8,否则mysql其他版本也会被删除)…

c#设计模式-行为型模式 之 状态模式

🚀简介 状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,我们可以通过创建一个状态接口和一些实现了该接口的状态类来实现状态模式。然后,我们可以创建一个上下文类,它会根据其当前的状态对象来改…

跨境电商卖家必知:如何提升订单好评的技巧大揭秘

随着跨境电商行业的不断发展,订单好评对于卖家来说变得越发重要。好评不仅能够提升产品和店铺的声誉,还能增加购买者的信任度,提高销售额。但是,如何获取更多的订单好评却是一个令卖家头疼的问题。下面将为您分享几个跨境电商订单…

PyTorch 深度学习实战

文章目录 前言1. 环境安装1.Anaconda2.pytorch cuda 环境3.测试 前言 1. 环境安装 1.Anaconda 可以参考这里:Anaconda学习 2.pytorch cuda 环境 我是按照下面的博客一步步完成,亲测有效 Pytorch安装教程(最全最详细版) 我的…

比特米盒子刷CoreELEC

CoreELEC就晶辰定制的Kodi版本,比特米盒子在刷入ATV后通过切换卡载系统可以安装CoreELEC即可安装,实现影音播放自由 1、U盘启动CoreELEC 1.1 、安装【安卓】切换卡载系统 通过U盘在已经刷好atv6.0的比特米盒子安装“切换卡载系统”。比特米盒子刷atv6.…

【C语言】善于利用指针(二)

💗个人主页💗 ⭐个人专栏——C语言初步学习⭐ 💫点击关注🤩一起学习C语言💯💫 ​ 目录 导读:1. 字符指针1.1 字符串的引用方式1.2 有趣的面试题 2. 数组指针2.1 一维数组指针的定义2.2 一维数组…

消息队列技术选型:这 7 种消息场景一定要考虑!

大家好,我是君哥。 我们在做消息队列的技术选型时,往往会结合业务场景进行考虑。今天来聊一聊消息队列可能会用到的 7 种消息场景。 1 普通消息 消息队列最基础的功能就是生产者发送消息、Broker 保存消息,消费者来消费消息,以…

在vue2中,v-model和.sync的区别

最近在封装一个弹窗组件时&#xff0c;用了比较复杂的逻辑去做显示和隐藏的逻辑&#xff0c;在查看同事的代码之后&#xff0c;才知道还有更简单的方法&#xff0c;自己已经忘了一些API. popup组件里统一的template&#xff1a; <div v-ifisShowPopup> // 弹窗内容 <…

手机图片合成gif怎么操作?用这个网站试试

制作gif动图的工具越来越多&#xff0c;但是很多时候使用电脑并不方便&#xff0c;想要在手机上制作gif动图的时候应该怎么办呢&#xff1f;很简单&#xff0c;给大家分享一款无需下载手机浏览器就能操作的gif制作&#xff08;https://www.gif.cn/&#xff09;工具-GIF中文网&a…

分库分表理论总结

一、概述 分库分表是在面对高并发、海量数量时常见的数据库层面的解决方案。通过把数据分散到不同的数据库中&#xff0c;使得单一数据库的数据量变小来缓解单一数据库的性能问题&#xff0c;从而达到提升数据库性能的目的。比如&#xff1a;将电商数据库拆分为若干独立的数据…

计算机考研 | 2019年 | 计算机组成原理真题

文章目录 【计算机组成原理2019年真题45题-16分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2019年真题46题-7分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2019年真题45题-16分】 【第一步&#…

FreeTAKServer安装教程

项目地址 https://github.com/FreeTAKTeam/FreeTakServer 环境说明 FreeTakServer使用python开发&#xff0c;所以需要安装python,本教程安装的python版本为python3.11,系统为ubuntu 20.04 安装 安装FreeTakServer 安装FreeTAKServer pip install FreeTakServer启动Free…

Canvas--》使用Canvas完成基本绘图

&#x1f31f;Canvas介绍 <canvas>是一个可以使用脚本 (通常为javaScript) 来绘制图形的HTML元素。例如&#xff0c;它可以用于绘制图表、制作图片构图或者制作简单的动画。如上面效果示例就是使用 <canvas> 来实现示例&#xff0c;后续将一步步实现上面效果。 C…

HDLbits: ece241 2014 q4

module top_module (input clk,input x,output z ); reg [2:0] Q;always(posedge clk)beginQ[0] < Q[0] ^ x;Q[1] < (~Q[1]) & x;Q[2] < (~Q[2]) | x;z < ~(| Q[2:0]); //错误&#xff01;&#xff01;&#xff01;&#xff01;endendmodule 正确答案&#xf…