日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
2020年入門數(shù)據(jù)分析選擇Python還是SQL?七個常用操作對比!

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

成都創(chuàng)新互聯(lián)公司專業(yè)提供電信機房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買電信機房托管服務(wù),并享受7*24小時金牌售后服務(wù)。

在閱讀本文前,你可以訪問下方網(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é)果被存儲在一個結(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中,進行選擇的同時還可以進行計算,比如添加一列

 
 
 
 
  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;

比如查找示例數(shù)據(jù)中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. SELECT *
  5. FROM frame
  6. 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()方法實現(xiàn)分組。groupby()通常是指一個過程,在該過程中,我們希望將數(shù)據(jù)集分為幾組,應(yīng)用某些功能(通常是聚合),然后將各組組合在一起。

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

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

在pandas中的等價操作為

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

六、連接

在pandas可以使用join()或merge()進行連接,每種方法都有參數(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. df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
  5.    ....:                     'value': np.random.randn(4)})

1. 內(nèi)連接

內(nèi)聯(lián)接使用比較運算符根據(jù)每個表共有的列的值匹配兩個表中的行,在SQL中實現(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ù),可以將一個DataFrame的列與另一個DataFrame的索引連接在一起

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

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

3. 全連接

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

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

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

七、合并

SQL中UNION操作用于合并兩個或多個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()實現(xiàn)UNION ALL

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

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


分享標(biāo)題:2020年入門數(shù)據(jù)分析選擇Python還是SQL?七個常用操作對比!
URL標(biāo)題:http://www.5511xx.com/article/dhdiepe.html