日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

入门数据分析选择Python还是SQL?七个常用操作对比!

發(fā)布時間:2024/9/15 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 入门数据分析选择Python还是SQL?七个常用操作对比! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

在閱讀本文前,你可以訪問下方網(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é)果表中,語法如下:

SELECT?column_name,column_name FROM?table_name;

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

SELECT?total_bill,?tip,?smoker,?time FROM?tips LIMIT?5;

而在pandas中,我們可以通過將列名列表傳遞給DataFrame來完成列選擇在SQL中,進行選擇的同時還可以進行計算,比如添加一列

SELECT?*,?tip/total_bill?as?tip_rate FROM?tips LIMIT?5;

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

? 二、查找

單條件查找

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

SELECT?column_name,column_name FROM?table_name WHERE?column_name?operator?value;

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

SELECT?* FROM?tips WHERE?time?=?'Dinner' LIMIT?5;

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

多條件查找

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

SELECT?* FROM?tips WHERE?time?=?'Dinner'?AND?tip?>?5.00;

在pandas中也有類似的操作

查找空值

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

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

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

SELECT?* FROM?frame WHERE?col2?IS?NULL;SELECT?* FROM?frame WHERE?col1?IS?NOT?NULL;

? 三、更新

在SQL中使用UPDATE

UPDATE?tips SET?tip?=?tip*2 WHERE?tip?<?2;

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

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

? 四、刪除

在SQL中使用DELETE

DELETE?FROM?tips WHERE?tip?>?9;

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

tips?=?tips.loc[tips['tip']?<=?9]

? 五、分組

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

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

SELECT?sex,?count(*) FROM?tips GROUP?BY?sex;

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

? 六、連接

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

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

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)})

內(nèi)連接

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

SELECT?* FROM?df1 INNER?JOIN?df2ON?df1.key?=?df2.key;

在pandas中可以使用merge()merge()提供了一些參數(shù),可以將一個DataFrame的列與另一個DataFrame的索引連接在一起????

左/右外聯(lián)接

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

SELECT?* FROM?df1 LEFT?OUTER?JOIN?df2ON?df1.key?=?df2.key;SELECT?* FROM?df1 RIGHT?OUTER?JOIN?df2ON?df1.key?=?df2.key;

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

全連接

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

SELECT?* FROM?df1 FULL?OUTER?JOIN?df2ON?df1.key?=?df2.key;

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

? 七、合并

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

SELECT?city,?rank FROM?df1 UNION?ALL SELECT?city,?rank FROM?df2; /*city??rankChicago?????1 San?Francisco?????2 New?York?City?????3Chicago?????1Boston?????4Los?Angeles?????5 */

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

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

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

-END-

來源:pandas官方文檔

h?????????????????ttps://pandas.pydata.org/docs/getting_started/comparison/comparison_with_sql.html

編譯:劉早起(有刪改)

由于微信平臺算法改版,公號內(nèi)容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:

(1)點擊頁面最上方“小詹學(xué)Python”,進入公眾號主頁。 (2)點擊右上角的小點點,在彈出頁面點擊“設(shè)為星標”,就可以啦。 感謝支持,比心。

總結(jié)

以上是生活随笔為你收集整理的入门数据分析选择Python还是SQL?七个常用操作对比!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。