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

          愛(ài)了!愛(ài)了!一款用 pandas 玩轉(zhuǎn) SQL 的神器

          共 2643字,需瀏覽 6分鐘

           ·

          2020-09-10 05:24


          1. 演示數(shù)據(jù)

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

          2. pandasql的使用

          1)簡(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)聲明全局變量的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é)果如下:

          3)寫幾個(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查詢
          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é)果如下:

          END

          回復(fù)關(guān)鍵詞「簡(jiǎn)明python」,立即獲取入門必備書籍簡(jiǎn)明python教程》電子版

          回復(fù)關(guān)鍵詞「爬蟲」,立即獲取爬蟲學(xué)習(xí)資料


          python入門與進(jìn)階
          每天與你一起成長(zhǎng)

          推薦閱讀

          瀏覽 34
          點(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>
                  色狂c熟妇中国日本 | 色情视频在线观看免费 | 国产精品白虎 | 蜜芽成人在线视频 | 天天操天天干欧美视频精品 |