1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2377字,需瀏覽 5分鐘

         ·

        2022-05-19 13:03

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

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


        瀏覽 49
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            【乱子伦】国产精品片 | 99精品无 | 精品久久国产字幕高潮 | 好大好硬好舒服 | 女人荫蒂被添的好舒服视频 | 久久人妻嫩草无码AV专区动漫 | 小黄片免费在线看 | 老司机伊人网 | 一级a做一级a做片性视频呀 | 五月婷婷欧美 |