成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

當Pandas遇到SQL,如何做關聯查詢

運維 數據庫運維
在日常數據查詢時,絕大多數情況是將表格關聯起來進行查詢的,而不僅僅是對一張表格的數據進行查詢,常用的數據拼接有兩種方法,一種是以行為單位縱向連接,另一種是以列為單位橫向拼接,縱向連接使用的函數是UNION,水平拼接使用的函數是JOIN,本節使用pandasql庫借助SQL語句進行表格連接,下面一起來學習。

[[428183]]

在日常數據查詢時,絕大多數情況是將表格關聯起來進行查詢的,而不僅僅是對一張表格的數據進行查詢,常用的數據拼接有兩種方法,一種是以行為單位縱向連接,另一種是以列為單位橫向拼接,縱向連接使用的函數是UNION,水平拼接使用的函數是JOIN,本節使用pandasql庫借助SQL語句進行表格連接,下面一起來學習。

  • 示例工具:anconda3.7
  • 本文講解內容:pandasql庫的使用、SQL連接
  • 適用范圍:在Python中實現多表連接

數據表創建

本節因為案例需要,所以事先用 pandas創建3個表,數據表內容包含用戶ID、日期、城市、年齡、性別等字段,三個表的共同字段都是用戶ID,所以,可以作為連接的主鍵,使用pandas構建數據表結果如下。

構建第一張表作為基礎表,以用戶ID作為主鍵,進行連接。

  1. import pandas as pd 
  2. import datetime 
  3. #構造數據集df1 
  4. df1 = pd.DataFrame({'用戶ID':[1001,1002,1003,1004,1005,1006], 
  5.                     '日期':pd.date_range(datetime.datetime(2021,3,26),periods=6), 
  6.                     '城市':['北京''上海''廣州''上海''杭州''北京'], 
  7.                     '年齡':[23,44,54,32,34,32], 
  8.                     '性別':['F','M','M','F','F','F'], 
  9.                     '成交量':[3200,1356,2133,6733,2980,3452]}, 
  10.                     columns =['用戶ID','日期','城市','年齡','性別','成交量']) 
  11. df1 

構建第二張表,用于數據表的橫向連接。

  1. #構造數據集df2 
  2. df2 = pd.DataFrame({'用戶ID':[1007,1008,1009], 
  3.                     '日期':pd.date_range(datetime.datetime(2021,3,1),periods=3), 
  4.                     '城市':['北京''上海''廣州'], 
  5.                     '年齡':[33,34,34,], 
  6.                     '性別':['F','M','F'], 
  7.                     '成交量':[4200,3356,2633]}, 
  8.                     columns =['用戶ID','日期','城市','年齡','性別','成交量']) 
  9. df2 

構建第三張表,以用戶ID為主鍵,用于數據表的橫向連接。

  1. #構造構造列名不同的df3 
  2. df3 = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008,1009,1010], 
  3.                     "平臺":['京東','淘寶','京東','天貓','唯品會','蘇寧','天貓','淘寶','美團','拼多多'], 
  4.                     "收入額":[100000,320000,240000,445000,340000,640000,300000,460000,540000,230000]}, 
  5.                     columns =['id','平臺','收入額']) 
  6. df3 

橫向連接

首先是表的橫向連接,顧名思義,就是在原基礎表,往下一空行復制粘貼新的數據,要求兩張表的列標題都是一樣的,才能正常連接,這里使用UNION ALL進行連接,表示將列標題相同的兩張表連接起來,如果是使用UNION連接,兩張中相同的兩行只會保留一行連接。

  1. #導入pandasql庫 
  2. import pandasql as sql 
  3.  
  4. #表的橫向連接 
  5. sql.sqldf("""select * from df1 
  6.              union all 
  7.              select * from df2""") 

縱向連接No.1內連接

縱向連接是表格連接中使用最廣泛的連接,縱向連接又可以分為內連接和外連接,內連接,連接表都匹配的記錄才會出現在最終的結果集,并且連接順序無關,這里內連接的第一種辦法是使用WHERE語句,當兩個表的ID相同時進行連接。

  1. #內連接 
  2. sql.sqldf("""select * from df1,df3 
  3.              where df1.用戶ID=df3.id;""") 

除了使用WHERE語句進行內連接,還可以使用INNER JOIN函數進行內連接,當兩個表的ID相同時進行連接。

  1. #內連接 
  2. sql.sqldf("""select * from df1 
  3.              inner join df3 
  4.              on df1.用戶ID=df3.id;""") 

縱向連接No.2外連接

外連接以其中一張表為驅動表,與另張表的每條記錄進行匹配如果能夠匹配則進行關聯并展示;如果不能匹配則以null展示,與連接順序有關,這里演示的LEFT JOIN函數,當右邊的表與左邊的基礎表的ID一致時,進行連接,類似于EXCEL函數中的VLOOKUP功能。

  1. #左外連接 
  2. sql.sqldf("""select * from df1 
  3.              left join df3 
  4.              on df1.用戶ID=df3.id;""") 

在日常工作使用左外連接的次數會很多,一般都是將多個表進行多次左外連接,這個知識點需要熟練掌握,將上面的連接結果分別賦值變量,然后導出,結果如下。

  1. #數據導出 
  2. write=pd.ExcelWriter(r'C:\Users\尚天強\Desktop'+'\\SQL連接查詢結果'+'.xlsx'
  3.  
  4. sqltable1.to_excel(write,sheet_name='SQL橫向連接',index=False
  5. sqltable2.to_excel(write,sheet_name='SQL縱向內連接',index=False
  6. sqltable3.to_excel(write,sheet_name='SQL縱向左外連接',index=False
  7.  
  8. write.save() 
  9. write.close() 

本文轉載自微信公眾號「大話數據分析」,可以通過以下二維碼關注。轉載本文請聯系大話數據分析公眾號。

 

 

責任編輯:武曉燕 來源: 大話數據分析
相關推薦

2022-08-29 08:08:58

SQLOracleCPU

2017-07-25 15:35:07

MysqlMysql優化LIMIT分頁

2009-09-25 10:22:35

Hibernate多表

2020-11-05 10:59:45

Mybatis

2012-06-05 02:20:24

JPAJava查詢語言

2011-06-07 15:27:02

SEO

2015-07-10 15:31:42

ITIoT物聯網

2010-06-03 09:24:46

Oracle

2015-03-18 13:18:45

MySQLSQL優化

2022-08-03 09:11:31

React性能優化

2015-09-18 15:22:56

DCIMITSM

2015-07-30 11:21:16

代碼審查

2012-03-12 16:42:54

測試

2022-02-17 13:18:58

定價模型營銷AHP

2023-12-29 10:04:47

數據分析

2012-05-07 08:49:57

Clojure

2021-04-25 09:19:22

騰訊Code Reviewleader

2023-11-06 07:33:01

推薦策略數據分析

2013-07-24 10:01:24

產品設計產品經理新手做產品

2022-10-19 14:16:18

樣式隔離前綴css
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99视频这里只有精品 | 成人欧美一区二区三区黑人孕妇 | 成人精品视频 | 成人欧美一区二区 | 久久久精彩视频 | 精品国产乱码久久久久久闺蜜 | 精品国产一区二区三区性色av | 中文字幕欧美日韩 | 日韩亚洲一区二区 | 精品久久久久久久久久久久 | 久草青青 | 少妇一级淫片aaaaaaaaa | 亚洲性视频网站 | 91久久精品国产 | 黄色免费在线网址 | av天天澡天天爽天天av | 日韩三级电影在线看 | 中文在线一区二区 | 亚洲欧美视频 | 中文字幕高清av | 国产成人综合网 | www.国产一区| 国产高清精品在线 | 国产色网站| 精品无码久久久久久久动漫 | 国产日韩精品视频 | 久久91视频 | 亚洲成人精品 | 日韩久久久久久 | 精品久久电影 | 精品视频一区二区三区在线观看 | 成人在线免费电影 | 国产成人叼嘿视频在线观看 | 中文字幕视频在线观看 | 日韩伦理一区二区 | 精品国产青草久久久久96 | 香蕉视频久久久 | 精品亚洲一区二区三区四区五区高 | 国产乱肥老妇国产一区二 | 成人在线免费看 | 免费网站国产 |