偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

2020年入門數(shù)據(jù)分析選擇Python還是SQL?七個(gè)常用操作對比!

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

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

[[346689]]

在閱讀本文前,你可以訪問下方網(wǎng)站下載本文使用的示例數(shù)據(jù),并導(dǎo)入MySQL與pandas中,一邊敲代碼一邊閱讀!

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

一、選擇

在SQL中,我們可以使用SELECT語句從表選擇數(shù)據(jù),結(jié)果被存儲在一個(gè)結(jié)果表中,語法如下:

  1. SELECT column_name,column_name 
  2. FROM table_name; 

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

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

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

在SQL中,進(jìn)行選擇的同時(shí)還可以進(jìn)行計(jì)算,比如添加一列

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

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

二、查找

1. 單條件查找

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

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

比如查找示例數(shù)據(jù)中time = dinner的記錄

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

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

2. 多條件查找

在SQL中,進(jìn)行多條件查找可以使用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函數(shù)

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

四、刪除

在SQL中使用DELETE

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

在pandas中,我們選擇應(yīng)保留的行,而不是刪除它們

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

五、分組

在pandas中,使用groupby()方法實(shí)現(xiàn)分組。groupby()通常是指一個(gè)過程,在該過程中,我們希望將數(shù)據(jù)集分為幾組,應(yīng)用某些功能(通常是聚合),然后將各組組合在一起。

常見的SQL操作是獲取整個(gè)數(shù)據(jù)集中每個(gè)組中的記錄數(shù)。例如,通過對性別進(jìn)行分組查詢

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

在pandas中的等價(jià)操作為

注意,在上面代碼中,我們使用size()而不是count() 這是因?yàn)閏ount()將函數(shù)應(yīng)用于每一列,并返回每一列中非空記錄的數(shù)量!

六、連接

在pandas可以使用join()或merge()進(jìn)行連接,每種方法都有參數(shù),可讓指定要執(zhí)行的聯(lián)接類型(LEFT,RIGHT,INNER,F(xiàn)ULL)或要聯(lián)接的列。

現(xiàn)在讓我們重新創(chuàng)建兩組示例數(shù)據(jù),分別用代碼來演示不同的連接

  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. 內(nèi)連接

內(nèi)聯(lián)接使用比較運(yùn)算符根據(jù)每個(gè)表共有的列的值匹配兩個(gè)表中的行,在SQL中實(shí)現(xiàn)內(nèi)連接使用INNER JOIN

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

在pandas中可以使用merge()

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

2. 左/右外聯(lián)接

在SQL中實(shí)現(xiàn)左/右外連接可以使用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中實(shí)現(xiàn)同樣可以使用merge()并指定how關(guān)鍵字為left或者right即可

3. 全連接

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

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

在pandas中實(shí)現(xiàn)同樣可以使用merge()并指定how關(guān)鍵字為outer

七、合并

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

  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()實(shí)現(xiàn)UNION ALL

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

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

 

責(zé)任編輯:趙寧寧 來源: 早起Python
相關(guān)推薦

2021-04-09 23:00:12

SQL數(shù)據(jù)庫Pandas

2020-07-27 05:40:13

Python數(shù)據(jù)分析開發(fā)

2017-11-24 14:20:38

2022-06-30 15:12:48

數(shù)據(jù)分析工具大數(shù)據(jù)

2020-07-07 12:06:58

大數(shù)據(jù)數(shù)據(jù)分析工具

2019-06-05 08:53:42

SQLPython集合操作

2020-01-14 08:22:44

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

2024-11-06 16:45:39

Python游戲開發(fā)代碼

2020-05-26 10:56:49

數(shù)據(jù)分析大數(shù)據(jù)數(shù)據(jù)

2020-03-02 17:11:10

戴爾

2014-03-12 15:23:20

2022-08-11 11:43:01

CISO首席信息安全官

2020-01-21 21:04:16

大數(shù)據(jù)據(jù)分析數(shù)據(jù)

2020-02-09 17:22:27

5大數(shù)據(jù)分析預(yù)測

2021-08-02 13:45:53

UPS電源數(shù)據(jù)中心

2020-02-09 13:26:22

數(shù)據(jù)分析數(shù)據(jù)大數(shù)據(jù)

2022-03-15 12:27:57

數(shù)據(jù)分析工具技能

2023-12-19 16:50:37

2012-06-21 08:56:59

2024-10-10 15:24:50

JSONPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號