<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Pandas與SQL的超強(qiáng)結(jié)合,爆贊!

          共 3198字,需瀏覽 7分鐘

           ·

          2022-06-06 16:50


          人生苦短,我學(xué)Python!
          本文的所有演示數(shù)據(jù),均是基于下方的四張表。下面這四張表大家應(yīng)該不陌生,這就是網(wǎng)傳50道經(jīng)典MySQL面試題中使用到的幾張?jiān)?。關(guān)于下方各表之間的關(guān)聯(lián)關(guān)系,我就不給大家說(shuō)明了,仔細(xì)觀(guān)察字段名,應(yīng)該就可以發(fā)現(xiàn)。

          簡(jiǎn)介

          pandas中的DataFrame是一個(gè)二維表格,數(shù)據(jù)庫(kù)中的表也是一個(gè)二維表格,因此在pandas中使用sql語(yǔ)句就顯得水到渠成,pandasql使用SQLite作為其操作數(shù)據(jù)庫(kù),同時(shí)Python自帶SQLite模塊,不需要安裝,便可直接使用。

          這里有一點(diǎn)需要注意的是:使用pandasql讀取DataFrame中日期格式的列,默認(rèn)會(huì)讀取年月日、時(shí)分秒,因此我們要學(xué)會(huì)使用sqlite中的日期處理函數(shù),方便我們轉(zhuǎn)換日期格式,下方提供sqlite中常用函數(shù)大全,希望對(duì)你有幫助。

          sqlite函數(shù)大全:http://suo.im/5DWraE

          導(dǎo)入相關(guān)庫(kù):

          import?pandas?as?pd??
          from?pandasql?import?sqldf

          聲明全局變量的2種方式

          • 在使用之前,聲明該全局變量;

          • 一次性聲明好全局變量;

          在使用之前,聲明該全局變量

          df1?=?pd.read_excel("student.xlsx")
          df2?=?pd.read_excel("sc.xlsx")
          df3?=?pd.read_excel("course.xlsx")
          df4?=?pd.read_excel("teacher.xlsx")

          global?df1
          global?df2
          global?df3
          global?df4
          query1?=?"select?*?from?df1?limit?5"
          query2?=?"select?*?from?df2?limit?5"
          query3?=?"select?*?from?df3"
          query4?=?"select?*?from?df4"

          sqldf(query1)
          sqldf(query2)
          sqldf(query3)
          sqldf(query4)

          部分結(jié)果如下:

          一次性聲明好全局變量

          df1?=?pd.read_excel("student.xlsx")??
          df2?=?pd.read_excel("sc.xlsx")??
          df3?=?pd.read_excel("course.xlsx")??
          df4?=?pd.read_excel("teacher.xlsx")??
          ??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          ??
          query1?=?"select?*?from?df1?limit?5"??
          query2?=?"select?*?from?df2?limit?5"??
          query3?=?"select?*?from?df3"??
          query4?=?"select?*?from?df4"??
          ??
          sqldf(query1)??
          sqldf(query2)??
          sqldf(query3)??
          sqldf(query4)

          部分結(jié)果如下:

          寫(xiě)幾個(gè)簡(jiǎn)單的SQL語(yǔ)句

          查看sqlite的版本

          student?=?pd.read_excel("student.xlsx")??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          query1?=?"""??
          ????select?sqlite_version(*)??
          """
          ??
          pysqldf(query1)

          結(jié)果如下:

          where篩選

          student?=?pd.read_excel("student.xlsx")??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          query1?=?"""??
          ????select?*???
          ????from?student???
          ????where?strftime('%Y-%m-%d',sage)?=?'1990-01-01'??
          """
          ??
          pysqldf(query1)

          結(jié)果如下:

          多表連接

          student?=?pd.read_excel("student.xlsx")??
          sc?=?pd.read_excel("sc.xlsx")??
          ??
          ??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          query2?=?"""??
          ????select?*??
          ????from?student?s??
          ????join?sc?on?s.sid?=?sc.sid??
          """
          ??
          pysqldf(query2)

          部分結(jié)果如下:

          分組聚合

          student?=?pd.read_excel("student.xlsx")??
          sc?=?pd.read_excel("sc.xlsx")??
          ??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          query2?=?"""??
          ????select?s.sname?as?姓名,sum(sc.score)?as?總分??
          ????from?student?s??
          ????join?sc?on?s.sid?=?sc.sid??
          ????group?by?s.sname??
          """
          ??
          pysqldf(query2)

          結(jié)果如下:

          union查詢(xún)

          student?=?pd.read_excel("student.xlsx")??
          pysqldf?=?lambda?q:?sqldf(q,?globals())??
          query1?=?"""??
          ????select?*???
          ????from?student???
          ????where?strftime('%Y-%m',sage)?=?'1990-01'??
          ????union??
          ????select?*???
          ????from?student???
          ????where?strftime('%Y-%m',sage)?=?'1990-12'??
          """
          ??
          pysqldf(query1)

          結(jié)果如下:





          推薦閱讀:

          入門(mén):?最全的零基礎(chǔ)學(xué)Python的問(wèn)題? |?零基礎(chǔ)學(xué)了8個(gè)月的Python??|?實(shí)戰(zhàn)項(xiàng)目?|學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評(píng),電影《后來(lái)的我們》?|?38年NBA最佳球員分析?|? ?從萬(wàn)眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個(gè)海量小姐姐素描圖?|碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!


          AI:?會(huì)做詩(shī)的機(jī)器人?|?給圖片上色?|?預(yù)測(cè)收入?|?碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水?。?/a>?|?一鍵把html網(wǎng)頁(yè)保存為pdf!|??再見(jiàn)PDF提取收費(fèi)!?|?用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r(jià)機(jī)票提示器!?|60行代碼做了一個(gè)語(yǔ)音壁紙切換器天天看小姐姐!




          年度爆款文案


          點(diǎn)閱讀原文,看B站我的20個(gè)視頻!

          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产男女操逼免费 | 色综合av在线 | 国产精品一区二区三区高潮 | 94色在线 | 蜜桃91在线观看 |