<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的超強結(jié)合,爆贊!

          共 3734字,需瀏覽 8分鐘

           ·

          2022-07-09 20:34


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

          大家好,我是黃同學??

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

          2. pandasql的使用

          1)簡介

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

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

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

          導入相關(guān)庫:

          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)寫幾個簡單的SQL語句

          ① 查看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é)果如下:



          相關(guān)閱讀:

          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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成人精品一区二区三区_ | sese网站| 唐山熟女工棚嗷嗷叫 | 亚洲黄色免费大全 | 人人摸人人摸人人操 |