女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Colab中使用SQL

智能感知與物聯網技術研究所 ? 來源:Towards Data Science ? 作者:Marie Stephen Leo ? 2021-10-12 09:39 ? 次閱讀

如今,編碼測試在數據科學面試過程中幾乎是標準的。

作為一名數據科學招聘經理,我發現一個20-30分鐘的現場編碼測試和一些準備好的任務能夠有效地識別那些能夠勝任職位的候選人。

Google Colab[https://colab.research.google.com/notebooks/intro.ipynb?utm_source=scs-index]是各種離線和實時數據科學編碼的優秀工具,因為它熟悉的筆記本環境和并且方便共享。但是Colab幾乎只限于Python(還有一些黑客攻擊)。

根據我個人的經驗,SQL是成為一名成功的數據科學家的關鍵技能。深度學習是很好的,但是如果你不能編寫SQL查詢,你可能永遠都會被你的貓對狗分類器所困擾。

因此,我開始尋找進行實時SQL編碼測試的方法,瞧!我偶然發現了這種在Colab(或任何Python環境)中運行SQL的簡單方法,實際上只有2個helper函數。

在本文中,我將介紹兩個Python函數,我們可以使用它們在Google Colab中設置和運行SQL,具體如下:

在Google Colab中創建一個數據庫并將數據幀上傳到該數據庫中的一個表中

在GoogleColab中對該數據庫和表編寫和執行SQL查詢。

所有代碼都可以在我的Github帳戶上找到。你也可以直接在谷歌Colab上打開代碼, 單擊此鏈接:

https://colab.research.google.com/github/stephenleo/medium-python-hacks/blob/main/02_sql_on_colab/main.ipynb

SQLite

失敗是成功之母

在這次搜索之前,我只隱約聽說過SQLite,但從未需要深入研究它。

SQLite…實現了一個小型、快速、自包含、高可靠性、功能齊全的SQL數據庫引擎。

SQLite是世界上使用最多的數據庫引擎。SQLite內置于所有手機和大多數計算機中,并捆綁在人們每天使用的應用程序中。

聽起來很有希望!SQLite的工作原理是創建一個本地的.db文件,我們可以像普通的SQL數據庫一樣連接到該文件。然后我們可以在這個.db文件上創建表、上傳數據和查詢數據。

另外,用于創建SQLite并與之交互的Python模塊(sqlite3)也是Python標準庫的一部分。所以它在Colab上是開箱即用的。

首先,讓我們導入sqlite3和pandas模塊,它們是我們任務的唯一需求

importsqlite3
importpandasaspd

函數1:將Dataframe轉換為SQL DB表

我們的第一個任務是創建一個數據庫,并將一個數據幀上傳到該數據庫中的一個表中。

下面的代碼將其作為一個函數實現,我將逐步介紹。該函數將輸入數據幀、表名稱和數據庫名稱(.db)作為輸入,并運行以下步驟。

  1. 設置一些日志以跟蹤函數的執行

  2. 查找數據框中的所有列。這是必要的,因為我們需要在創建表和將數據上載到表時提供此信息。

  3. 連接到.db文件(如果存在)。如果文件不存在,請在本地計算機上創建新文件。

  4. 在.db文件中創建一個表,我們在上一步中連接到該表(或剛剛創建)

  5. 將 input_df 中的數據行上傳到我們在上一步中剛剛創建的表中

  6. 提交更改并關閉與數據庫的連接

defpd_to_sqlDB(input_df:pd.DataFrame,
table_name:str,
db_name:str='default.db')
->None:


'''
取一個數據幀'input_df'并將其上傳到'table_name'SQLITE表
Args:
input_df(pd.DataFrame):包含要上傳到SQLITE的數據的數據幀
table_name(str):要上傳的SQLITE表的名稱
db_name (str, optional):創建表的SQLITE數據庫的名稱。
默認為“default.db”
'''


#步驟1:設置本地日志
importlogging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s%(levelname)s:%(message)s',
datefmt='%Y-%m-%d%H:%M:%S')

#步驟2:在數據幀中查找列
cols=input_df.columns
cols_string=','.join(cols)
val_wildcard_string=','.join(['?']*len(cols))

#步驟3:如果DB文件存在,連接到它,否則創建一個新文件
con=sqlite3.connect(db_name)
cur=con.cursor()
logging.info(f'SQLDB{db_name}created')

#步驟4:創建表
sql_string=f"""CREATETABLE{table_name}({cols_string});"""
cur.execute(sql_string)
logging.info(f'SQLTable{table_name}createdwith{len(cols)}columns')

#步驟5:上傳數據幀
rows_to_upload=input_df.to_dict(orient='split')['data']
sql_string=f"""INSERTINTO{table_name}({cols_string})VALUES({val_wildcard_string});"""
cur.executemany(sql_string,rows_to_upload)
logging.info(f'{len(rows_to_upload)}rowsuploadedto{table_name}')

#步驟6:提交更改并關閉連接
con.commit()
con.close()

函數2:對數據幀的SQL查詢

我們的第二個任務是在第一個任務中創建的數據庫和表上編寫和執行SQL查詢。

下面的代碼將其作為另一個函數實現,我也將逐步介紹。該函數將sql_query_string和db_name(.db file)作為輸入,運行以下步驟,并返回一個dataframe作為輸出。

  1. 連接到.DB文件中的SQL DB

  2. 在SQL查詢字符串中執行SQL查詢

  3. 運行SQL查詢后獲取結果數據和輸出的列名

  4. 關閉與數據庫的連接

  5. 將結果作為數據幀返回

defsql_query_to_pd(sql_query_string:str,db_name:str='default.db')->pd.DataFrame:
'''執行一個SQL查詢,并以數據幀的形式返回結果
Args:
sql_query_string(str):要執行的SQL查詢字符串
db_name(str,optional)::要執行查詢的SQLITE數據庫的名稱
默認為“default.db”
Returns:
pd.DataFrame:數據幀中SQL查詢的結果
'''

#步驟1:連接SQL數據庫
con=sqlite3.connect(db_name)

#步驟2:執行SQL查詢
cursor=con.execute(sql_query_string)

#步驟3:獲取數據和列名
result_data=cursor.fetchall()
cols=[description[0]fordescriptionincursor.description]

#步驟4:關閉連接
con.close()

#步驟5:返回數據幀
returnpd.DataFrame(result_data,columns=cols)

差不多就是這樣!我們現在有兩個函數,可以粘貼到任何Colab筆記本中,以解決我們的兩個任務。讓我們通過一個例子來看看如何使用這兩個函數

使用這兩個函數在Colab中運行SQL

由于新冠病毒基本上是我們這些天談論的唯一話題,我從Kaggle下載了一個新冠病毒疫苗樣本數據集,以測試我們的兩個函數函數的使用非常簡單,如下所示

  1. 將下載的csv文件加載到數據幀中

  2. 使用我們的第一個函數pd_to_sqlDB函數將我們在上一步中加載的數據幀上載到名為default.DB的數據庫中名為 country_vaccination 的表中

  3. 在名為 sql_query_string 的字符串變量中編寫SQL查詢。正如你在下面的代碼片段中所看到的,我們可以編寫任何可以想到的復雜SQL查詢。

  4. 使用第二個函數sql_query_to_pd在default.db上執行上一步的sql查詢,并將結果保存在result_df數據框中

#步驟1:讀取csv文件到一個數據幀
#數據集來自https://www.kaggle.com/gpreda/covid-world-vaccination-progress
input_df=pd.read_csv('country_vaccinations.csv')

#步驟2:上傳數據幀到SQL表
pd_to_sqlDB(input_df,
table_name='country_vaccinations',
db_name='default.db')

#步驟3:在字符串變量中寫入SQL查詢
sql_query_string="""
SELECTcountry,SUM(daily_vaccinations)astotal_vaccinated
FROMcountry_vaccinations
WHEREdaily_vaccinationsISNOTNULL
GROUPBYcountry
ORDERBYtotal_vaccinatedDESC
"""


#步驟4:執行SQL查詢
result_df=sql_query_to_pd(sql_query_string,db_name='default.db')
result_df

d456ab56-2ab5-11ec-82a8-dac502259ad0.png

從結果中,我們可以看到(在撰寫本文時),中國的接種人數居世界首位,其次是印度和美國。我們通過在GoogleColab中對DB執行SQL查詢得到了這些結果!

給你。現在,你可以在下次面試中展示你卓越的Python和SQL知識了!

另外,節省一些時間,直接使用我在本文開頭鏈接的GoogleColab筆記本,它包含上述函數和示例查詢。

編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    780

    瀏覽量

    44800
  • 函數
    +關注

    關注

    3

    文章

    4367

    瀏覽量

    64160
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70240
  • python
    +關注

    關注

    56

    文章

    4823

    瀏覽量

    86157

原文標題:在Colab中使用SQL

文章出處:【微信號:tyutcsplab,微信公眾號:智能感知與物聯網技術研究所】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    在Google Colab筆記本電腦上導入OpenVINO?工具包2021中的 IEPlugin類出現報錯,怎么解決?

    在 Google* Colab Notebook 上OpenVINO?工具包 2021 中使用了 IEPlugin 。 遇到: ImportError: cannot import name \'IEPlugin\' from \'openvino.inferenc
    發表于 03-05 10:31

    何在MATLAB中使用DeepSeek模型

    在 DeepSeek-R1(https://github.com/deepseek-ai/DeepSeek-R1) AI 模型橫空出世后,人們幾乎就立馬開始詢問如何在 MATLAB 中使用這些模型
    的頭像 發表于 02-13 09:20 ?2946次閱讀
    如<b class='flag-5'>何在</b>MATLAB<b class='flag-5'>中使</b>用DeepSeek模型

    何在Windows中使用MTP協議

    、圖片等)的通信協議,它被廣泛用于Android設備。以下是如何在Windows中使用MTP協議的詳細步驟: 1. 確保設備支持MTP 首先,你需要確認你的設備支持MTP協議。大多數現代Android
    的頭像 發表于 01-03 10:26 ?2056次閱讀

    SQL與NoSQL的區別

    在信息技術領域,數據庫是存儲和管理數據的核心組件。隨著互聯網的發展和大數據時代的到來,對數據庫的需求也在不斷變化。SQL和NoSQL作為兩種主流的數據庫管理系統,各自有著獨特的優勢和應用場
    的頭像 發表于 11-19 10:15 ?501次閱讀

    何在智能手機系統中使用bq27505

    電子發燒友網站提供《如何在智能手機系統中使用bq27505.pdf》資料免費下載
    發表于 10-17 10:21 ?0次下載
    如<b class='flag-5'>何在</b>智能手機系統<b class='flag-5'>中使</b>用bq27505

    何在RS-485網絡中使用MSP430和MSP432 eUSCI和USCI模塊

    電子發燒友網站提供《如何在RS-485網絡中使用MSP430和MSP432 eUSCI和USCI模塊.pdf》資料免費下載
    發表于 10-09 10:21 ?0次下載
    如<b class='flag-5'>何在</b>RS-485網絡<b class='flag-5'>中使</b>用MSP430和MSP432 eUSCI和USCI模塊

    何在MSP430?MCU中使用智能模擬組合

    電子發燒友網站提供《如何在MSP430?MCU中使用智能模擬組合.pdf》資料免費下載
    發表于 09-14 10:19 ?0次下載
    如<b class='flag-5'>何在</b>MSP430?MCU<b class='flag-5'>中使</b>用智能模擬組合

    何在反向降壓-升壓拓撲中使用TPS6290x

    電子發燒友網站提供《如何在反向降壓-升壓拓撲中使用TPS6290x.pdf》資料免費下載
    發表于 09-13 10:07 ?0次下載
    如<b class='flag-5'>何在</b>反向降壓-升壓拓撲<b class='flag-5'>中使</b>用TPS6290x

    何在汽車CAN應用中使用負邊緣觸發觸發器節省電力

    電子發燒友網站提供《如何在汽車CAN應用中使用負邊緣觸發觸發器節省電力.pdf》資料免費下載
    發表于 09-13 10:06 ?0次下載
    如<b class='flag-5'>何在</b>汽車CAN應用<b class='flag-5'>中使</b>用負邊緣觸發觸發器節省電力

    何在顯示器設計中使用TPS6598x I2C控制TUSB564

    電子發燒友網站提供《如何在顯示器設計中使用TPS6598x I2C控制TUSB564.pdf》資料免費下載
    發表于 09-12 09:54 ?0次下載
    如<b class='flag-5'>何在</b>顯示器設計<b class='flag-5'>中使</b>用TPS6598x I2C控制TUSB564

    何在新興的低軌衛星應用中使用數字隔離器隔離信號

    電子發燒友網站提供《如何在新興的低軌衛星應用中使用數字隔離器隔離信號.pdf》資料免費下載
    發表于 09-12 09:37 ?0次下載
    如<b class='flag-5'>何在</b>新興的低軌衛星應用<b class='flag-5'>中使</b>用數字隔離器隔離信號

    何在IMC300系列中使用開環控制?

    何在 IMC300 系列中使用開環控制? 我設置角度選擇 = 2 和 CtrlModeSelect = 2,就可以控制電機的速度了。 目前,我想測試開環。 我將 Vd_Ext 和 Vq_Ext 都
    發表于 07-22 07:20

    何在SQL中創建觸發器

    的業務邏輯,以及執行審計和記錄更改歷史等功能。下面,我將詳細解釋如何在SQL中創建觸發器,并附帶示例代碼。
    的頭像 發表于 07-18 16:01 ?3186次閱讀

    何在RTOS中使用spi_interface.c?

    何在 RTOS 中使用 spi_interface.c?
    發表于 07-10 06:29

    請問cmakelists中的變量如何在程序中使用?

    大家好, 我有個問題請教,cmakelists.txt中的變量如何在程序中使用?比如以下cmakelists.txt文件中的PROJECT_VER變量,我如何在c程序中使用?試了很多辦
    發表于 06-11 07:34