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

          收藏!全文2000字,當(dāng)Pandas遇上Excel會擦出什么樣的火花呢?!

          共 4885字,需瀏覽 10分鐘

           ·

          2021-12-11 07:30

          ↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包


          Excel是我們職場打工人接觸最多的辦公室軟件之一,當(dāng)中會涉及到很多重復(fù)的操作,好在Python為我們提供了很多操作Excel的模塊,能夠幫助我們極大地提高工作效率,從瑣碎的工作時(shí)間中抽出身來。
          今天我們要介紹的模塊是xlsxwriter,它的主要功能是在Excel表格當(dāng)中插入數(shù)據(jù)、插入圖表,以及進(jìn)行一系列數(shù)據(jù)的處理,

          xlsxwriter模塊安裝

          直接在命令行中輸入

          pip?install?xlsxwriter

          或者使用豆瓣鏡像

          pip?install?-i?https://pypi.douban.com/simple?xlsxwriter

          安裝成功之后,來看一下如何使用

          將多個(gè)DataFrame數(shù)據(jù)保存到Excel表格當(dāng)中

          當(dāng)我們用pandas模塊對Excel表格進(jìn)行處理的時(shí)候,需要引用xlsxwriter模塊作為內(nèi)在的引擎。我們來實(shí)現(xiàn)一下如何將多個(gè)DataFrame數(shù)據(jù)保存在一張Excel表格當(dāng)中,并且分成不同的sheet
          import?pandas?as?pd

          #?創(chuàng)建幾個(gè)DataFrame數(shù)據(jù)集
          df1?=?pd.DataFrame({'Data':?[11,?13,?15,?17]})
          df2?=?pd.DataFrame({'Data':?[21,?23,?25,?27]})
          df3?=?pd.DataFrame({'Data':?[31,?33,?35,?37]})

          #?引入xlsxwriter作為引擎,制作ExcelWriter寫入器
          writer?=?pd.ExcelWriter('pandas_multiple.xlsx',?engine='xlsxwriter')

          #?將不同的DataFrame數(shù)據(jù)集寫入不同的sheetd當(dāng)中
          df1.to_excel(writer,?sheet_name='Sheet1')
          df2.to_excel(writer,?sheet_name='Sheet2')
          df3.to_excel(writer,?sheet_name='Sheet3')

          #?輸出生成的Excel文件
          writer.save()

          我們就可以在同級目錄中看到生成的一個(gè)Excel文件,在不同的Sheet當(dāng)中分別存放著指定的數(shù)據(jù)集

          將多個(gè)DataFrame數(shù)據(jù)集放在一張Sheet當(dāng)中

          將多個(gè)DataFrame數(shù)據(jù)集放在同一張Sheet當(dāng)中,通過當(dāng)中的參數(shù)startcolstartrow,顧名思義就是從哪一行、哪一列開始
          df1?=?pd.DataFrame({'Data':?[11,?13,?15,?17]})
          df2?=?pd.DataFrame({'Data':?[21,?23,?25,?27]})
          df3?=?pd.DataFrame({'Data':?[31,?33,?35,?37]})
          df4?=?pd.DataFrame({'Data':?[41,?43,?45,?47]})

          writer?=?pd.ExcelWriter('pandas_positioning.xlsx',?engine='xlsxwriter')

          #?存放在指定的位置當(dāng)中
          df1.to_excel(writer,?sheet_name='Sheet1')??#?默認(rèn)位置是從A1開始的
          df2.to_excel(writer,?sheet_name='Sheet1',?startcol=4)
          df3.to_excel(writer,?sheet_name='Sheet1',?startrow=8)

          #?當(dāng)然我們不需要header和index
          df4.to_excel(writer,?sheet_name='Sheet1',
          ?????????????startrow=10,?startcol=15,?header=False,?index=False)

          writer.save()

          如下圖所示

          針對表格中的數(shù)據(jù)繪制直方圖

          下面我們來看一下,如何利用Pandas來根據(jù)表格中的數(shù)據(jù)繪制柱狀圖,并且保存在Excel表格當(dāng)中,在xlsxwriter模塊當(dāng)中有add_chart()方法,提供了9中圖表的繪制方法,我們先來看一下柱狀圖的繪制
          df?=?pd.DataFrame({'Data':?[10,?20,?30,?20,?15,?30,?45]})
          writer?=?pd.ExcelWriter('pandas_chart.xlsx',?engine='xlsxwriter')
          df.to_excel(writer,?sheet_name='Sheet1')

          workbook??=?writer.book
          worksheet?=?writer.sheets['Sheet1']

          #?繪制柱狀圖圖表
          chart?=?workbook.add_chart({'type':?'column'})

          #?根據(jù)哪些數(shù)據(jù)來繪制圖表
          chart.add_series({'values':?'=Sheet1!$B$2:$B$8'})

          #?將繪制完成的圖表插入到sheet當(dāng)中
          worksheet.insert_chart('D2',?chart)

          writer.save()

          如下圖所示

          針對表格中的數(shù)據(jù)制作折線圖

          我們只需要針對上面的代碼,將type當(dāng)中的column改成line即可繪制折線圖

          df?=?pd.DataFrame({'Data':?[10,?20,?30,?20,?15,?30,?45]})
          writer?=?pd.ExcelWriter('pandas_line.xlsx',?engine='xlsxwriter')
          df.to_excel(writer,?sheet_name='Sheet1')

          workbook??=?writer.book
          worksheet?=?writer.sheets['Sheet1']

          #?繪制折線圖圖表
          chart?=?workbook.add_chart({'type':?'line'})

          #?根據(jù)哪些數(shù)據(jù)來繪制圖表
          chart.add_series({'values':?'=Sheet1!$B$2:$B$8'})

          #?將繪制完成的圖表插入到sheet當(dāng)中
          worksheet.insert_chart('D2',?chart)

          writer.save()

          如下圖所示

          除了折線圖與直方圖之外,小編也在上面提到,xlsxwriter模塊提供了繪制9中圖表的方法,分別是
          • 折線圖:line
          • 柱狀圖:column
          • 水平折線圖:bar
          • 面積圖:area
          • 餅圖:pie
          • 散點(diǎn)圖:scatter
          • 雷達(dá)圖:radar
          • 空心餅圖:doughnut
          • K線圖:stock

          我們僅僅只需要在add_chart()方法當(dāng)中,填入對應(yīng)的圖表的類型即可

          為圖表添加標(biāo)題等輔助內(nèi)容

          當(dāng)然圖表繪制出來之后,我們還需要添加例如標(biāo)題、標(biāo)記等輔助內(nèi)容,畢竟我們希望繪制出來的圖表能夠被更多的人給理解,

          添加標(biāo)題是去調(diào)用set_title()方法

          chart.set_title({'name':?'.....'})

          添加x軸與y軸上面的標(biāo)注,需要用到的方法是

          chart.set_x_axis({'name':?'...'})
          chart.set_y_axis({'name':?'...'})

          我們嘗試來繪制一個(gè)直方圖,并且添加上這些輔助信息

          import?xlsxwriter

          workbook?=?xlsxwriter.Workbook('chart.xlsx')
          worksheet?=?workbook.add_worksheet()

          #?Create?a?new?Chart?object.
          chart?=?workbook.add_chart({'type':?'column'})

          #?創(chuàng)建數(shù)據(jù)
          data?=?[
          ????[1,?3,?5,?7,?9],
          ????[2,?4,?6,?8,?10],
          ????[3,?6,?9,?12,?15],
          ]

          worksheet.write_column('A1',?data[0])
          worksheet.write_column('B1',?data[1])
          worksheet.write_column('C1',?data[2])

          #?基于指定的數(shù)據(jù)集來繪制圖表
          chart.add_series({'values':?'=Sheet1!$A$1:$A$5'})
          chart.add_series({'values':?'=Sheet1!$B$1:$B$5'})
          chart.add_series({'values':?'=Sheet1!$C$1:$C$5'})

          #?標(biāo)題與標(biāo)注
          chart.set_title({"name":?"直方圖"})
          chart.set_x_axis({'name':?'這個(gè)是X軸'})
          chart.set_y_axis({'name':?'這個(gè)是Y軸'})

          #?將繪制出來的圖表插入到sheet當(dāng)中
          worksheet.insert_chart('A7',?chart)

          workbook.close()

          如下圖所示

          同時(shí)我們還可以將兩種圖表結(jié)合起來,例如是將折線圖與直方圖這兩種圖表結(jié)合起來繪制,通過內(nèi)置的combine()方法
          chart?=?workbook.add_chart({'type':?'column'})
          chart.add_series({'values':?'=Sheet1!$B$2:$B$8'})

          line_chart?=?workbook.add_chart({"type":?"line"})
          line_chart.add_series({'values':?'=Sheet1!$B$2:$B$8'})

          chart.combine(line_chart)

          如下圖所示

          數(shù)據(jù)保留特定位數(shù)

          我們可以對數(shù)據(jù),尤其是一些小數(shù),指定保留例如兩位小數(shù),或者是指定位數(shù)的小數(shù),代碼如下

          df?=?pd.DataFrame({'Numbers':????[1010,?2020,?3030,?2020,?1515,?3030,?4545],
          ???????????????????'Percentage':?[.1,???.2,???.33,??.25,??.5,???.75,??.45?],
          })

          writer?=?pd.ExcelWriter("pandas_column_formats.xlsx",?engine='xlsxwriter')
          df.to_excel(writer,?sheet_name='Sheet1')
          workbook??=?writer.book
          worksheet?=?writer.sheets['Sheet1']

          #?指定保留小數(shù)的位數(shù)
          format1?=?workbook.add_format({'num_format':?'#,##0.00'})
          format2?=?workbook.add_format({'num_format':?'0%'})

          #?設(shè)置列的寬度以及保留小數(shù)的位數(shù)
          worksheet.set_column('B:B',?18,?format1)

          #?不設(shè)置列的寬度,但是設(shè)置保留小數(shù)的位數(shù)
          worksheet.set_column('C:C',?None,?format2)

          writer.save()

          如下圖所示


          推薦閱讀

          1. Python Web實(shí)戰(zhàn):Flask + Vue 開發(fā)一個(gè)漂亮的詞云網(wǎng)站

          2. 50條有趣的Python一行代碼,建議收藏!

          3. 又一款超酷的可視化神器:cutecharts

          4. 機(jī)密!網(wǎng)易員工數(shù)據(jù)分析內(nèi)訓(xùn)課程,白嫖了?。砀絻r(jià)值399元資料包)



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

          手機(jī)掃一掃分享

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

          手機(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>
                  日韩欧美影院 | 第一页综合| 百度一下 你就知道 | 在线做爱网站 | 欧美理论视频在线观看 |