更新時間:2019年10月09日16時03分 來源:傳智播客 瀏覽次數(shù):
Python爬蟲數(shù)據(jù)如何寫入Execl文件并生成圖表?
需求:為了做測試或者對爬蟲程序爬取數(shù)據(jù)進行分析匯總,我們時常會將數(shù)據(jù)生成報表,但是如果我們想將報表生成在Excel中,這時候就可以借助xlsxwriter第三方包來生成圖表。
分析:為生成excel準(zhǔn)備多維數(shù)組類型的數(shù)據(jù)->數(shù)據(jù)插入到Excel中->對數(shù)據(jù)按系列劃分生成圖表。【推薦了解:python+人工智能課程】
第一步:準(zhǔn)備數(shù)據(jù):
使用爬蟲爬取網(wǎng)絡(luò)上關(guān)于熱門崗位的數(shù)據(jù)并生成多維數(shù)組類型,如下:
data = [
["IOS崗位數(shù)", "Android崗位數(shù)", "Python崗位數(shù)", "物聯(lián)網(wǎng)崗位數(shù)", "Go與區(qū)塊鏈崗位數(shù)"],
[2000, 4000, 60000, 8000, 1000],
]
第二步:將數(shù)據(jù)插入Excel中
首先要創(chuàng)建一個Excel文件,然后在Excel中創(chuàng)建一個sheet表單頁,最后將數(shù)據(jù)插入到sheet表單頁中
1、創(chuàng)建一個Excel對象
workbook = xlsxwriter.Workbook(“Excel名字.xlsx”)
2、基于Excel對象創(chuàng)建一個sheet表單對象
worksheet = workbook.add_worksheet(name=“sheet表單的名字,不填寫就默認為sheet1")
3、將數(shù)據(jù)寫入sheet表單頁worksheet
worksheet.write_row( row, col, data, cell_format=None)
worksheet.write_column(row, col, data, cell_format=None)
3.1、可以用A1表示第一行第一列的那個單元格,這個時候后面的data可以是個數(shù)組,直接插入一行數(shù)據(jù)
worksheet.write_column("A1", 一列數(shù)據(jù), 樣式(非必填項))
worksheet.write_row("A1", 一行數(shù)據(jù), 樣式(非必填項))
具體代碼如下:
# Write some data to add to plot on the chart.
data = [
["IOS崗位數(shù)", "Android崗位數(shù)", "Python崗位數(shù)", "物聯(lián)網(wǎng)崗位數(shù)", "Go與區(qū)塊鏈崗位數(shù)"],
[2000, 4000, 60000, 8000, 1000],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
第三步:生成圖表
1.通過Workbook add_chart()方法創(chuàng)建圖表對象,其中指定了圖表類型:
chart = workbook.add_chart({'type': 'column'})
通過type定義圖標(biāo)的類型,比如是柱形圖還是餅圖
支持的圖表類型是:
area:創(chuàng)建區(qū)域(實線)樣式圖表。
bar:創(chuàng)建條形樣式(轉(zhuǎn)置直方圖)圖表。
column:創(chuàng)建列樣式(直方圖)圖表。
line:創(chuàng)建線型圖表。
pie:創(chuàng)建餅圖樣式圖表。
doughnut:創(chuàng)建圓環(huán)樣式圖表。
scatter:創(chuàng)建散點圖樣式圖表。
stock:創(chuàng)建庫存樣式圖表。
radar:創(chuàng)建雷達樣式圖表。
代碼如下:
# Create a new Chart object.
chart = workbook.add_chart({'type': 'column'})
2、添加圖標(biāo)要統(tǒng)計的數(shù)據(jù),同一個報表可以添加多個系列
代碼如下:
chart.add_series({
'categories': '=Sheet1!$A$1:$A$5',
'values': '=Sheet1!$B$1:$B$5',
'line': {'color': 'red'},
'name': '各崗位數(shù)匯總',
})
categories:這將設(shè)置圖表類別標(biāo)簽。該類別與X軸大致相同。在大多數(shù)圖表類型中,該categories 屬性是可選的,圖表將僅假設(shè)一個順序系列 1..n。
values:這是系列中最重要的屬性,是每個圖表對象的唯一必需選項。此選項將圖表與其顯示的工作表數(shù)據(jù)相鏈接??梢允褂蒙厦娴谝粋€示例中所示的公式或使用第二個示例中所示的值列表來設(shè)置數(shù)據(jù)范圍。
line:設(shè)置系列線型的屬性,如顏色和寬度。請參見圖表格式:行。
name:設(shè)置系列的名稱。名稱顯示在公式欄中。對于非餅圖/圓環(huán)圖,它也會顯示在圖例中。name屬性是可選的,如果未提供,則默認為。名稱也可以是公式,例如,包含工作表名稱,行和列的列表。Series 1..n=Sheet1!$A$1['Sheet1', 0, 0]
如下圖所示:
3、給圖表定義名字和樣式
代碼如下:
chart.set_title({'name': '各崗位數(shù)匯總_圖表'})
chart.set_style(10)
4、將圖表插入到Excel中
代碼如下:
# Insert the chart into the worksheet.
worksheet.insert_chart('A7', chart)
5、關(guān)閉保存修改
代碼如下:
workbook.close()