python操作Excel、讀取CVS與數據可視化


1. python操作Excel

python操作Excel有多種module可以實現(xlrd、xlwt、xlutils、openpyxl、xlsxwriter),本文使用xlsxwriter這個module,官方鏈接地址。xlsxwriter支持在Excel 2007之后版本的xlsx文件中編寫多個工作表的文本、數字、公式和超鏈接。本文中用到的類主要有WorkbookWorksheetChart,對Excel進行數據寫入和生成折線圖、柱狀圖、餅圖。

1.1 xlsxwriter模塊介紹

1.1.1 Workbook類

Workbook是xlsxwriter模塊的主類,對excel文件的操作都需要通過這個類,表示在excel中看到的整個電子表格。

函數名 功能 返回值 備注
Workbook(filename[, options]) 構造函數--根據傳入的文件名創建Workbook對象 Workbook對象
add_worksheet([name]) 為excel文件添加一個worksheet worksheet對象 不指定名字默認為sheet1、sheet2...
add_format([properties]) 創建一個format對象 格式化對象
add_chart(options) 創建一個Chart對象 Chart對象
close() 關閉打開的xlsx文件並進行寫入

1.1.2 Worksheet類

Worksheet類表示一個Excel工作表,處理向單元格寫入數據或格式化工作布局等操作。

函數名 功能 返回值 備注
write_row(row, col, data[, cell_format]) 以某個單元格作為起始寫入行數據 0--成功 其他--失敗 可以通過(row,col)來索引單元格,也可以通過'A1'、'A2'的形式
write_column(row, col, data[, cell_format]) 以某個單元格作為起始寫入列數據 0--成功 其他--失敗 同上
insert_chart(row, col, chart[, options]) 在worksheet中插入一個chart 0--成功 -1--索引越界 (row, col)用於指定chart的顯示位置

1.1.3 Chart類

Chart類是xlsxwriter中用來操作圖表的類,通過workbook.add_chart函數創建Chart對象。

函數名 功能 返回值 備注
add_series(options) 向圖表中添加數據序列
set_title(options) 設置圖表標題
set_x_axis(options) 設置X軸
set_y_axis(options) 設置Y軸
set_style(style_id) 設置圖表樣式類型

1.2 excel寫入及繪圖

1.2.1 折線圖

# -*- coding:utf-8 -*-

import xlsxwriter

# 創建一個excel
workbook = xlsxwriter.Workbook("chart_line.xlsx")
# 創建一個sheet
worksheet = workbook.add_worksheet()
# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、准備數據並寫入excel---------------
# 向excel中寫入數據,建立圖標時要用到
headings = ['Version', '1.0.27', '1.0.29', '1.0.30', '1.0.31']
data = [
    ['1', '-1', '-2', '-3', '-4', '-5'],
    [10, 40, 50, 20, 30, 50],
    [20, 60, 40, 10, 40, 30],
    [30, 40, 60, 10, 50, 10],
    [40, 30, 55, 15, 30, 30]
]
# 寫入表頭
worksheet.write_row('A1', headings, bold)
# 寫入數據
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
worksheet.write_column('D2', data[3])
worksheet.write_column('E2', data[4])
# --------2、生成圖表並插入到excel---------------
# 創建一個柱狀圖(line chart)
chart_col = workbook.add_chart({'type': 'line'})
# 配置第1個系列數據
chart_col.add_series({
    # 這里的Sheet1是默認的值
    'name': '=Sheet1!$B$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$B$2:$B$7',
    'line': {'color': 'red'},
})
# 配置第2個系列數據
chart_col.add_series({
    'name': '=Sheet1!$C$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$C$2:$C$7',
    'line': {'color': 'yellow'},
})
# 配置第二個系列數據
chart_col.add_series({
    'name': '=Sheet1!$D$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$D$2:$D$7',
    'line': {'color': 'blue'},
})
# 配置第二個系列數據
chart_col.add_series({
    'name': '=Sheet1!$E$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$E$2:$E$7',
    'line': {'color': 'green'},
})
# 設置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'The dll return Analysis'})
chart_col.set_x_axis({'name': 'return value'})
chart_col.set_y_axis({'name':  'count'})
# 設置圖表的風格
chart_col.set_style(1)
# 把圖表插入到worksheet並設置偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})
# 關閉文件
workbook.close()

1.2.2 柱狀圖

# -*- coding:utf-8 -*-
import xlsxwriter

# 創建一個excel
workbook = xlsxwriter.Workbook("chart_column.xlsx")
# 創建一個sheet
worksheet = workbook.add_worksheet()

# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})

# --------1、准備數據並寫入excel---------------
headings = ['Version', '1.0.27', '1.0.29', '1.0.30', '1.0.31']
data = [
    ['1', '-1', '-2', '-3', '-4', '-5'],
    [10, 40, 50, 20, 30, 50],
    [20, 60, 40, 10, 40, 30],
    [30, 40, 60, 10, 50, 10],
    [40, 30, 55, 15, 30, 30]
]

# 寫入表頭
worksheet.write_row('A1', headings, bold)

# 寫入數據
worksheet.write_column('A2', data[0], bold)
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
worksheet.write_column('D2', data[3])
worksheet.write_column('E2', data[4])

# --------2、生成圖表並插入到excel---------------
# 創建一個柱狀圖(column chart)
chart_col = workbook.add_chart({'type': 'column'})

# 配置第1個系列數據
chart_col.add_series({
    # sheet1是默認的值
    'name': '=Sheet1!$B$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$B$2:$B$7',
    'fill': {'color': 'red', 'transparency': 30},
})

# 配置第2個系列數據
chart_col.add_series({
    'name': '=Sheet1!$C$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$C$2:$C$7',
    'fill': {'color': 'blue', 'transparency': 30},
})

# 配置第3個系列數據
chart_col.add_series({
    'name': '=Sheet1!$D$1',
    'categories':  '=Sheet1!$A$2:$A$7',
    'values':   '=Sheet1!$D$2:$D$7',
    'fill': {'color': 'green', 'transparency': 30},
})

# 配置第4個系列數據
chart_col.add_series({
    'name': '=Sheet1!$E$1',
    'categories': '=Sheet1!$A$2:$A$7',
    'values': '=Sheet1!$E$2:$E$7',
    'fill': {'color': 'yellow', 'transparency': 30},
})

# 設置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'The dll return Analysis'})
chart_col.set_x_axis({'name': 'return value'})
chart_col.set_y_axis({'name':  'count'})

# 設置圖表的風格
chart_col.set_style(1)

# 把圖表插入到worksheet以及偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})

workbook.close()

1.2.3 餅圖

# -*- coding:utf-8 -*-
import xlsxwriter

# 創建一個excel
workbook = xlsxwriter.Workbook("chart_pie.xlsx")
# 創建一個sheet
worksheet = workbook.add_worksheet()

# 自定義樣式,加粗
bold = workbook.add_format({'bold': 1})

# --------1、准備數據並寫入excel---------------
# 向excel中寫入數據,建立圖標時要用到
data = [
    ['1.0.27', '1.0.29', '1.0.30', '1.0.31'],
    [32, 23, 18, 25],
]

# 寫入數據
worksheet.write_row('A1', data[0], bold)
worksheet.write_row('A2', data[1])

# --------2、生成圖表並插入到excel---------------
# 創建一個柱狀圖(pie chart)
chart_col = workbook.add_chart({'type': 'pie'})

# 配置第一個系列數據
chart_col.add_series({
    'name': 'Bug Counts',
    'categories': '=Sheet1!$A$1:$D$1',
    'values': '=Sheet1!$A$2:$D$2',
    'points': [
        {'fill': {'color': '#BC3FBC'}},
        {'fill': {'color': '#0DAD48'}},
        {'fill': {'color': '#D8B31C'}},
        {'fill': {'color': 'gray'}},
    ],

})

# 設置圖表的title 和 x,y軸信息
chart_col.set_title({'name': 'Bug Counts'})

# 設置圖表的風格,excel內置48種圖表樣式
chart_col.set_style(25)

# 把圖表插入到worksheet以及坐標位置
worksheet.insert_chart('B10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()

2. python操作cvs文件

2.1 csv文件簡介

Comma-Separated Values逗號分隔值,其文件以純文本的形式存儲表格數據,廣泛應用在程序之間轉移表格數據,如何可以將csv直接在Excel中以表格的形式打開,也可以作為源數據直接導入到數據庫當中。文件類似如下的形式,

OcrVersion,OcrResult,TimeExpend
1.0.0.27,-5,33.61749870069975
1.0.0.27,1,124.42219042629038
1.0.0.27,1,86.97660413336142
1.0.0.27,1,97.52896716737031
1.0.0.27,-5,0.48869203305051956
1.0.0.27,-5,0.5020905159192068
1.0.0.27,-5,0.4943334995215487

2.2 python讀寫cvs文件

2.3 pandas讀取cvs數據及可視化

3. 總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM