入門資料分析選擇Python還是SQL?七個常用操作對比
SQL和Python幾乎是當前資料分析師必須要了解的兩門語言,它們在處理資料時有什麼區別?本文將分別用 MySQL和 pandas來展示七個在資料分析中常用的操作,希望可以 幫助掌握其中一種語言的讀者快速瞭解另一種方法! (文末也有給大家整理兩種方法的影片教程,大家按需學習就好)
一、選擇
在SQL中,我們可以使用 SELECT語句從表選擇資料,結果被儲存在一個結果表中,語法如下:
SELECT column_name,column_nameFROM table_name;
如果 不想顯示全部的記錄,可以使用 TOP或 LIMIT來限制行數。因此選擇tips表中的部分列可以使用下面的語句
SELECT total_bill, tip, smoker, timeFROM tipsLIMIT 5;
而在pandas中,我們可以透過 將列名列表傳遞給DataFrame來完成列選擇
在SQL中,進行選擇的同時還可以進行計算,比如新增一列
SELECT *, tip/total_bill as tip_rateFROM tipsLIMIT 5;
在pandas中使用 DataFrame.assign()同樣可以完成這個操作
二、查詢
單條件查詢
在SQL中, WHERE子句用於提取那些滿足指定條件的記錄,語法如下
SELECT column_name,column_nameFROM table_nameWHERE column_name operator value;
比如查詢示例資料中 time = dinner的記錄
SELECT *FROM tipsWHERE time = 'Dinner'LIMIT 5;
而在pandas中,按照條件進行查詢則可以有多種形式,比如可以 將含有 True/False的Series物件傳遞給DataFrame,並返回所有帶有True的行
多條件查詢
在SQL中,進行多條件查詢可以使用AND/OR來完成
SELECT *FROM tipsWHERE time = 'Dinner' AND tip > 5.00;
在pandas中也有類似的操作
查詢空值
在pandas檢查空值是使用 notna()和 isna()方法完成的。
frame[frame['col1'].notna()]
在SQL中可以使用 IS NULL和 IS NOT NULL完成
SELECT *FROM frameWHERE col2 IS NULL;SELECT *FROM frameWHERE col1 IS NOT NULL;
三、更新
在SQL中使用 UPDATE
UPDATE tipsSET tip = tip*2WHERE tip < 2;
而在pandas中則有多種方法,比如使用 loc函式
tips.loc[tips['tip'] < 2, 'tip'] *= 2
四、刪除
在SQL中使用DELETE
DELETE FROM tipsWHERE tip > 9;
在pandas中,我們選擇應保留的行,而不是刪除它們
tips = tips.loc[tips['tip'] <= 9]
五、分組
在pandas中,使用 groupby()方法實現分組。 groupby()通常是指一個過程,在該過程中,我們希望將資料集分為幾組,應用某些功能(通常是聚合),然後將各組組合在一起。
常見的SQL操作是獲取整個資料集中每個組中的記錄數。例如,透過 對性別進行分組查詢
SELECT sex, count(*)FROM tipsGROUP BY sex;
在pandas中的等價操作為
注意,在上面程式碼中,我們 使用size()而不是count() 這是因為count()將函式應用於每一列,並返回每一列中非空記錄的數量!
六、連線
在pandas可以使用 join()或 merge()進行連線,每種方法都有引數,可讓指定要執行的聯接型別(LEFT,RIGHT,INNER,FULL)或要聯接的列。
現在讓我們重新建立兩組示例資料,分別用程式碼來演示不同的連線
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], ....: 'value': np.random.randn(4)}) ....: df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'], ....: 'value': np.random.randn(4)})
內連線
內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行,在SQL中實現內連線使用 INNER JOIN
SELECT *FROM df1INNER JOIN df2 ON df1.key = df2.key;
在pandas中可以使用 merge()
merge()提供了一些引數,可以將一個DataFrame的列與另一個DataFrame的索引連線在一起
左/右外聯接
在SQL中實現左/右外連線可以使用 LEFT OUTER JOIN和 RIGHT OUTER JOIN
SELECT *FROM df1LEFT OUTER JOIN df2 ON df1.key = df2.key; SELECT *FROM df1RIGHT OUTER JOIN df2 ON df1.key = df2.key;
在pandas中實現同樣可以使用 merge()並指定how關鍵字為 left或者 right即可
全連線
全連線返回左表和右表中的所有行,無論是否匹配, 但並不是所有的資料庫都支援,比如mysql就不支援,在SQL中實現全連線可以使用 FULL OUTER JOIN
SELECT *FROM df1FULL OUTER JOIN df2 ON df1.key = df2.key;
在pandas中實現同樣可以使用 merge()並指定how關鍵字為 outer
七、合併
SQL中UNION操作用於 合併兩個或多個SELECT語句的結果集, UNION與 UNION ALL類似,但是UNION將刪除重複的行。示例程式碼如下
SELECT city, rankFROM df1UNION ALLSELECT city, rankFROM df2;/* city rank Chicago 1 San Francisco 2 New York City 3 Chicago 1 Boston 4 Los Angeles 5 */
在pandas中可以使用 concat()實現 UNION ALL
上面是 UNION ALL保留重複值,如果希望刪除可以使用 drop_duplicates()
以上就是本文的全部內容,可以看到在不同的場景下不同的語言有著不同的特性
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2732437/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 想要從事資料分析,選擇python還是R語言呢?PythonR語言
- Python資料分析入門(十四):資料分析中常用圖Python
- 對比過幾個Python學習產品,最後還是選擇了風變程式設計Python程式設計
- php還是java,選擇比努力更重要!PHPJava
- Python 資料分析入門寶藏書,選它!Python
- 選擇python還是web前端好PythonWeb前端
- Python與Golang對比,如何選擇?PythonGolang
- Python資料分析入門Python
- 選擇 Python3.6 還是 Python 3.7Python
- 分析選擇Salesforce CRM還是Zoho CRM(上)Salesforce
- Python初學者,選擇Python2還是選擇Python3好?Python
- 選擇HHDESK的理由四[【資料夾對比功能】
- QT選擇目錄等常用檔案/資料夾操作QT
- Python資料分析入門(五)Python
- Python資料分析入門(四)Python
- Python資料分析入門(三)Python
- Python資料分析入門(二)Python
- Python資料分析入門(一)Python
- python資料庫操作 - PyMySQL入門Python資料庫MySql
- 資料分析師之SQL入門SQL
- 資料庫入門之RDS選擇原則資料庫
- 怎樣選擇TCP還是選擇UDPTCPUDP
- 一文讀懂選擇資料湖還是資料倉儲
- Python入門(五):Python常用操作運算子Python
- 第一章 Excel資料分析入門 --(3)Excel處理資料的常用操作Excel
- 大資料搜尋選開源還是商業軟體?ElasticSearch 對比 Splunk大資料Elasticsearch
- 對比資料泵與原始匯入匯出工具(七)
- redis存json資料時選擇string還是hashRedisJSON
- 資料說話:擇業,選穩定?還是個人價值?
- SQL與Pandas大資料分析效能對比(Haki Benita)SQL大資料
- python入門總結(資料分析方向)Python
- Python入門教程—資料分析工具PandasPython
- 資料庫常用操作SQL語句資料庫SQL
- 資料上雲,應該選擇全量抽取還是增量抽取?
- 查詢策略選擇:使用 JOIN 還是多條 SQL 語句SQL
- 選Ruby還是選Python?Python
- 入門 | 32個常用 Python 實現Python
- 程式設計師:選擇效率,還是選擇質量?程式設計師