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

2020年入門數據分析選擇Python還是SQL?七個常用操作對比!

開發 后端
SQL和Python幾乎是當前數據分析師必須要了解的兩門語言,它們在處理數據時有什么區別?本文將分別用MySQL和pandas來展示七個在數據分析中常用的操作。

SQL和Python幾乎是當前數據分析師必須要了解的兩門語言,它們在處理數據時有什么區別?本文將分別用MySQL和pandas來展示七個在數據分析中常用的操作,希望可以幫助掌握其中一種語言的讀者快速了解另一種方法!

[[346689]]

在閱讀本文前,你可以訪問下方網站下載本文使用的示例數據,并導入MySQL與pandas中,一邊敲代碼一邊閱讀!

https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/io/data/csv/tips.csv

一、選擇

在SQL中,我們可以使用SELECT語句從表選擇數據,結果被存儲在一個結果表中,語法如下:

  1. SELECT column_name,column_name 
  2. FROM table_name; 

如果不想顯示全部的記錄,可以使用TOP或LIMIT來限制行數。因此選擇tips表中的部分列可以使用下面的語句

  1. SELECT total_bill, tip, smoker, time 
  2. FROM tips 
  3. LIMIT 5; 

而在pandas中,我們可以通過將列名列表傳遞給DataFrame來完成列選擇

在SQL中,進行選擇的同時還可以進行計算,比如添加一列

  1. SELECT *, tip/total_bill as tip_rate 
  2. FROM tips 
  3. LIMIT 5; 

在pandas中使用DataFrame.assign()同樣可以完成這個操作

二、查找

1. 單條件查找

在SQL中,WHERE子句用于提取那些滿足指定條件的記錄,語法如下

  1. SELECT column_name,column_name 
  2. FROM table_name 
  3. WHERE column_name operator value; 

比如查找示例數據中time = dinner的記錄

  1. SELECT * 
  2. FROM tips 
  3. WHERE time = 'Dinner' 
  4. LIMIT 5; 

而在pandas中,按照條件進行查找則可以有多種形式,比如可以將含有True/False的Series對象傳遞給DataFrame,并返回所有帶有True的行

2. 多條件查找

在SQL中,進行多條件查找可以使用AND/OR來完成

在pandas中也有類似的操作

3. 查找空值

在pandas檢查空值是使用notna()和isna()方法完成的。

  1. frame[frame['col1'].notna()] 

在SQL中可以使用IS NULL和IS NOT NULL完成

  1. SELECT * 
  2. FROM frame 
  3. WHERE col2 IS NULL; 
  4.  
  5. SELECT * 
  6. FROM frame 
  7. WHERE col1 IS NOT NULL; 

三、更新

在SQL中使用UPDATE

  1. UPDATE tips 
  2. SET tiptip = tip*2 
  3. WHERE tip < 2

而在pandas中則有多種方法,比如使用loc函數

  1. tips.loc[tips['tip'] < 2, 'tip'] *= 2 

四、刪除

在SQL中使用DELETE

  1. DELETE FROM tips 
  2. WHERE tip > 9; 

在pandas中,我們選擇應保留的行,而不是刪除它們

  1. tipstips = tips.loc[tips['tip'] <= 9] 

五、分組

在pandas中,使用groupby()方法實現分組。groupby()通常是指一個過程,在該過程中,我們希望將數據集分為幾組,應用某些功能(通常是聚合),然后將各組組合在一起。

常見的SQL操作是獲取整個數據集中每個組中的記錄數。例如,通過對性別進行分組查詢

  1. SELECT sex, count(*) 
  2. FROM tips 
  3. GROUP BY sex; 

在pandas中的等價操作為

注意,在上面代碼中,我們使用size()而不是count() 這是因為count()將函數應用于每一列,并返回每一列中非空記錄的數量!

六、連接

在pandas可以使用join()或merge()進行連接,每種方法都有參數,可讓指定要執行的聯接類型(LEFT,RIGHT,INNER,FULL)或要聯接的列。

現在讓我們重新創建兩組示例數據,分別用代碼來演示不同的連接

  1. df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 
  2.    ....:                     'value': np.random.randn(4)}) 
  3.    ....:  
  4.  
  5. df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'], 
  6.    ....:                     'value': np.random.randn(4)}) 

1. 內連接

內聯接使用比較運算符根據每個表共有的列的值匹配兩個表中的行,在SQL中實現內連接使用INNER JOIN

  1. SELECT * 
  2. FROM df1 
  3. INNER JOIN df2 
  4.   ON df1.key = df2.key; 

在pandas中可以使用merge()

merge()提供了一些參數,可以將一個DataFrame的列與另一個DataFrame的索引連接在一起👇

2. 左/右外聯接

在SQL中實現左/右外連接可以使用LEFT OUTER JOIN和RIGHT OUTER JOIN

  1. SELECT * 
  2. FROM df1 
  3. LEFT OUTER JOIN df2 
  4.   ON df1.key = df2.key; 
  5.    
  6. SELECT * 
  7. FROM df1 
  8. RIGHT OUTER JOIN df2 
  9.   ON df1.key = df2.key; 

在pandas中實現同樣可以使用merge()并指定how關鍵字為left或者right即可

3. 全連接

全連接返回左表和右表中的所有行,無論是否匹配,但并不是所有的數據庫都支持,比如mysql就不支持,在SQL中實現全連接可以使用FULL OUTER JOIN

  1. SELECT * 
  2. FROM df1 
  3. FULL OUTER JOIN df2 
  4.   ON df1.key = df2.key; 

在pandas中實現同樣可以使用merge()并指定how關鍵字為outer

七、合并

SQL中UNION操作用于合并兩個或多個SELECT語句的結果集,UNION與UNION ALL類似,但是UNION將刪除重復的行。示例代碼如下

  1. SELECT city, rank 
  2. FROM df1 
  3. UNION ALL 
  4. SELECT city, rank 
  5. FROM df2; 
  6. /* 
  7.          city  rank 
  8.       Chicago     1 
  9. San Francisco     2 
  10. New York City     3 
  11.       Chicago     1 
  12.        Boston     4 
  13.   Los Angeles     5 
  14. */ 

在pandas中可以使用concat()實現UNION ALL

上面是UNION ALL保留重復值,如果希望刪除可以使用 drop_duplicates()

以上就是本文的全部內容,可以看到在不同的場景下不同的語言有著不同的特性,如果你想深入學習了解可以進一步查閱官方文檔并多加練習!

 

責任編輯:趙寧寧 來源: 早起Python
相關推薦

2021-04-09 23:00:12

SQL數據庫Pandas

2017-11-24 14:20:38

2022-06-30 15:12:48

數據分析工具大數據

2020-07-27 05:40:13

Python數據分析開發

2020-07-07 12:06:58

大數據數據分析工具

2020-01-14 08:22:44

軟件定義的分支SD-branchSD-WAN

2024-11-06 16:45:39

Python游戲開發代碼

2019-06-05 08:53:42

SQLPython集合操作

2020-03-02 17:11:10

戴爾

2014-03-12 15:23:20

2022-08-11 11:43:01

CISO首席信息安全官

2020-05-26 10:56:49

數據分析大數據數據

2021-08-02 13:45:53

UPS電源數據中心

2012-06-21 08:56:59

2020-01-21 21:04:16

大數據據分析數據

2020-02-09 17:22:27

5大數據分析預測

2020-10-28 13:54:19

網絡安全認證安全行業網絡安全

2020-02-09 13:26:22

數據分析數據大數據

2022-03-15 12:27:57

數據分析工具技能

2019-09-09 10:32:51

基于意圖的網絡IBN網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久 | 超黄毛片 | 久久一区二区视频 | 九九综合| 婷婷综合激情 | 99久久精品国产毛片 | 国产美女在线观看 | 东方伊人免费在线观看 | 久久精品视频在线播放 | 91在线视频播放 | 久久91| 国产色 | 人人艹人人爽 | 一本色道精品久久一区二区三区 | 亚洲视频欧美视频 | 91精品亚洲 | 久久丁香 | 99久久精品视频免费 | 午夜一区二区三区在线观看 | 91秦先生艺校小琴 | 日日干夜夜操 | 日韩成人在线观看 | 亚洲一二三区不卡 | 亚洲精品一区二区三区蜜桃久 | 国产精品久久久久9999鸭 | 亚洲网在线 | 最近中文字幕在线视频1 | 欧美精品一区二区三区蜜桃视频 | 久久99这里只有精品 | 国产精品完整版 | 一区二区三区在线观看免费视频 | 99爱在线免费观看 | 久久69精品久久久久久久电影好 | 日韩视频国产 | 久久av一区二区三区 | 亚洲国产一区视频 | 91亚洲一区 | 久久久精品一区二区三区 | 国产精品久久久久久婷婷天堂 | 九九热这里 | 99视频免费 |