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的超強(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)系,我就不給大家說明了,仔細(xì)觀察字段名,應(yīng)該就可以發(fā)現(xiàn)。

        簡介

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

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

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

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

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

        寫幾個(gè)簡單的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é)果如下:





        推薦閱讀:

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


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


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


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


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




        年度爆款文案


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

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        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>
            免费的成人A片无码同人 | aaaaa成人无码在线观看 97自拍超碰 | 天天日夜操| 女生被男生操爽 | 高潮精品一区videoshd | 国产精品现线观看 | 嗯~宝贝胸罩脱了让我揉你的胸 | 五月天一区二区三区 | 韩国精品一区二区 | 男人天堂一区二区 |