日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

sql和python的区别_数据处理简单对比:Excel,SQL,Python

發布時間:2025/3/15 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql和python的区别_数据处理简单对比:Excel,SQL,Python 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

無論是什么工具,做數據分析的時候一定會涉及到兩類工作:

合并多個關聯表

做數據透視表

這篇文章簡單對比一下Excel、SQL和Python在這兩類任務上的實現過程,從而對比其異同。

用到的數據表

01

如圖所示,所涉及的共有三個表:

student:sno 學生學號,sname 學生姓名,ssex 性別,sbirthday 學生生日,class 學生所在班級號;

course:cno 課程號,cname 課程名;

score:sno 學生學號,cno 學生選修課程對應的課程號,degree 學生所選課程對應的課程分數。

可以看到,score表通過sno和student表連接、通過cno和course表連接。

另外,這張截圖截自Excel,主要是為了方便后面Excel部分的討論。

合并多個關聯表

現在,我想要合并三張表,得到新表merge_table,表包含的列一次為:sno,cno,degree,sname,cname。

即,新表中包含score表的所有列,student表的sname列,以及course表的cname列。

1. Excel

為了討論方便,先上結果:

02

首先,在A17:E17單元格創建所需列名,然后通過簡單復制粘貼得到A18:C28這三列的數據。

D、E列的數據可以通過以下兩種方法實現:

使用INDEX()+MATCH()函數;

使用VLOOKUP()函數。

兩種方法實現邏輯和結果都一樣,但前者調用的時候比后者稍復雜。為了說明,D列數據的提取我使用了方法1,E列數據的提取我使用了方法2。

D列:

首先在D18單元格輸入以下函數(函數中的單元格所對應的數據請看圖01)

=INDEX($B$3:$B$8,MATCH(A18,$A$3:$A$8,0))

接著下拉函數至D28。

E列:

在E18單元格輸入以下函數(函數中的單元格所對應的數據請看圖01)

=VLOOKUP(B18,$G$3:$H$6,2,0)

接著下拉函數至E28。

注意,如果要提取某個表中的多個列的數據,比如除了sname,我還想得到ssex、sbirthday和class的數據,由于這些列是一同儲存在student表中的,用VLOOPKUP()顯然更高效。

如果想要加快效率,還可以在原student表上新增一行,用數字x來表示第x列,然后在調用VLOOPKUP()時,直接把第三個參數指向這一行。

2. SQL

在合并關聯表上,SQL非常便捷。實現的語句有兩個(先創建或者導入原數據表):

SELECT score.*, sname, cname FROM score, course, student

WHERE score.sno = student.sno AND score.cno = course.cno;

SELECT score.*, sname, cname FROM score

LEFT JOIN student USING(sno)

LEFT JOIN course USING(cno);

兩種方法返回的結果相同,結果如下:

03

我用的MySQL,不知道為什么合并后行的順序變了=。=

3. Python

在Python中,首先導入numpy和pandas模塊:

import numpy as np

import pandas as pd

接著導入數據表。

之后通過以下語句實現merge_table表的建立:

merge_table = pd.merge(score, student[['sno','sname']], on = 'sno', how = 'left')

merge_table = merge_table.merge(course[['cno','cname']], on = 'cno', how = 'left')

結果如下:

04

如果合并的表中數據不匹配怎么辦

現在假設score表多了一行數據:

05

如圖所示,藍色部分為多出的數據,且課程6-106在course表中不存在。請無視邏輯問題,主要是為了方便討論:)

1. Excel

遇到這種情況,上述的實現方法會出現一個問題:

06

因為課程號6-106在course表里并不存在,所以函數在返回值的時候出錯了。

解決的辦法有一個,就是在原函數上嵌套IF()函數。比如我把E29的函數更改為:

=IF(ISERROR(VLOOKUP(B29,$G$3:$H$6,2,0)),0,VLOOKUP(B29,$G$3:$H$6,2,0))

如果函數計算結果錯誤,則返回0。

07

2. SQL

在SQL中,如果出現此類情況,LEFT JOIN會返回NULL值:

08

如果想把NULL值替換為0,查詢合并表的時候可以加上isnull()函數(MySQL中此函數寫作ifnull()):

SELECT score.*, isnull(sname,0), isnull(cname,0) FROM score

LEFT JOIN student USING(sno)

LEFT JOIN course USING(cno);

如果函數計算結果錯誤,則返回0

返回結果和Excel的差不多,就不上圖了。

3. Python

Python中情況類似:

09

如果想把NaN值替換為0,只需要在創建merge_table表之后,添加一行語句:

merge_table = merge_table.fillna(0)

返回結果也不上圖了,和Excel的一樣。

4. PS

面對合并表中數據不匹配,SQL和Python中都可以在合并表的時候把多出項忽略不計,只要把LEFT JOIN換成INNER JOIN就行了。但Excel不能自動刪除多出項所在行。

數據透視表

為了方便,現在做一個透視表,該表返回選了課的同學的學號和其平均課程成績。

三個軟件對于透視表的實現都很友好,并且效率相近。

1. Excel

10

Excel在數據透視表工具下把列各種拖拽就行了。

另外,Excel的數據透視表可以選擇返回合計(Grand Total)或者不返回。

2. SQL

語句:

SELECT sno, ROUND(AVG(degree),2) AS 'mean' FROM score

GROUP BY sno;

結果:

11

3. Python

語句:

score.groupby(['sno'])['degree'].agg(['mean']).reset_index()

結果:

12

一般做透視表的最終目的是作圖,畢竟一圖勝千語。

從這個目的出發,Python比SQL、Excel更實用,一來Python比Excel作圖高效很多,二來SQL不能作圖。

總結

通過上述對比可以發現,Excel合并關聯表比SQL、Python要低效得多,而且在“數據不匹配”問題上解決得不好;而在另一方面,三者在創建透視表上表現相似,就看你習慣用哪個了:)

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的sql和python的区别_数据处理简单对比:Excel,SQL,Python的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线不卡 | av在线看片 | 国产精品一二三四区 | 日本性爱视频在线观看 | 色婷婷色综合 | 亚洲欧洲日本一区二区三区 | av电影在线播放 | 日韩在线一二三 | 又大又长粗又爽又黄少妇视频 | 成人性生生活性生交全黄 | 久久手机免费视频 | 大黄毛片 | 69久久 | 日本中文字幕久久 | 亚洲国产www | 精品一区亚洲 | 69欧美视频 | 成人免费小视频 | 日本视频黄 | 免费观看的av | 裸体女视频 | 波多野结衣视频免费 | 免费黄色入口 | 日本强好片久久久久久aaa | 亚洲一区二区三区四区五区午夜 | av美国 | 亚洲成av | 一区二区三区视频在线免费观看 | 婷婷综合av | 国模杨依粉嫩蝴蝶150p | 日本理论片午伦夜理片在线观看 | 一级片在线观看视频 | 潘金莲一级淫片aaaaa武则天 | 黄页av | 色欲亚洲Av无码精品天堂 | 这里精品 | jizz18国产| 国产综合精品一区二区三区 | 一区二区三区国产视频 | 不卡的日韩av | 精品三级电影 | 不卡的免费av | 欧美色综合网 | 日韩欧美综合一区 | 色婷婷av久久久久久久 | 99ri精品 | 妇女一级片 | 日本一区二区三区在线观看 | 日本免费一区二区三区最新 | 中文久久久久 | 亚洲色图图片 | 亚洲国产黄色av | 精品久久久久久久中文字幕 | 中文字字幕 | 国产69精品久久久久久久 | 黄色91免费观看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 免费超爽大片黄 | 国产高清一区二区三区四区 | 日本美女视频一区 | 天天综合久久 | 亚洲制服一区二区 | 国产精品免费看久久久无码 | 福利视频三区 | 美国黄色一级毛片 | 黄色片a级片 | 91av色 | 免费激情视频网站 | 久久久久亚洲av成人毛片韩 | 韩国三级黄色 | 亚洲成网站 | 久在线 | 久久精品一区二区三区不卡牛牛 | 黄色网址大全免费 | 精品久久久久久久久久 | 天天射美女 | 黄色高清视频 | 美女脱光衣服让男人捅 | 丝袜美腿亚洲一区二区图片 | 欧美少妇xxx | 97香蕉视频| 男人插女人下面视频 | 色翁荡息又大又硬又粗又爽 | 91黄色在线观看 | 国精产品一二三区精华液 | 久久久久一区二区精码av少妇 | 久久久久五月天 | 欧美日韩视频一区二区 | 四虎黄色影视 | 国产一级黄色大片 | 能看的毛片 | 亚洲色偷偷综合亚洲av伊人 | 久久精品专区 | 午夜成年人 | 免费av软件 | 天天网综合 | 狠狠艹视频 | 女女互慰吃奶互揉调教捆绑 | 国产精久久久 |