您的位置:首页 > 编程语言 > Python开发

Python xlrd、xlwt读写Excel

2018-01-09 23:10 435 查看
____tz_zs

# -*- coding: utf-8 -*-
"""
@author: tz_zs
Excel中的数据为13列有线性关系的数字
"""
import xlrd
import xlwt
import random
import numpy as np
from sklearn import linear_model

# 数据准备,读取Excel,填充好训练集和测试集
def get_data_set(trainingSet=[], trainingSet_data=[], trainingSet_label=[],
testSet=[], testSet_data=[], testSet_label=[]):
data = xlrd.open_workbook('数据.xls') # 打开xls文件
table = data.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
print("数据集总共有:%d 行" % nrows)
ncols = table.ncols # 获取表的列数
print("数据集总共有:%d 列" % ncols)
for i in range(nrows): # 逐行(0~5759)
r = random.random() # 每次生成一个[0, 1.0)之间的随机浮点数,用于决定这组数据属于哪个数据集
if r < 0.5:
trainingSet.append(table.row_values(i)[:ncols]) # 取前ncols列
trainingSet_data.append(table.row_values(i)[1:nrows])
trainingSet_label.append([table.row_values(i)[0]])
else:
testSet.append(table.row_values(i)[:ncols])
testSet_data.append(table.row_values(i)[1:nrows])
testSet_label.append([table.row_values(i)[0]])

# 设置单元格样式
def set_style(name, height, bold=False):
style = xlwt.XFStyle() # 初始化样式

font = xlwt.Font() # 为样式创建字体
font.name = name # 'Times New Roman'
font.bold = bold
font.color_index = 4
font.height = height

# borders= xlwt.Borders()
# borders.left= 6
# borders.right= 6
# borders.top= 6
# borders.bottom= 6

style.font = font
# style.borders = borders

return style

# 将数据写如Excel
def write_excel(yPred, testSet_data, testSet_label):
f = xlwt.Workbook() # 创建工作簿

# 创建sheet
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True) # 创建sheet
row0 = [u'预测值', u'真实值', u'2号', u'3号', u'4号', u'5号', u'6号', u'7号', u'8号', u'9号', u'10号', u'11号',u'12号', u'13号']

# 单元格样式
c_style = set_style('Times New Roman', 220, True)

# 生成第一行
for i in range(0, len(row0)):
sheet1.write(0, i, row0[i], c_style)

# 写入数据
for i in range(len(testSet_data)): # 循环写入每一行
# 第0列为预测数据
sheet1.write(i + 1, 0, yPred[i][0], c_style)
# 第1列为真实值
sheet1.write(i + 1, 1, testSet_label[i][0], c_style)
# 第2到13为其他2到13的数据
for j in range(12):
sheet1.write(i + 1, j + 2, testSet_data[i][j], c_style)

f.save('data.xls') # 保存文件

def main():
# 数据准备
trainingSet = [] # 训练集
trainingSet_data = []
trainingSet_label = []
testSet = [] # 测试集
testSet_data = []
testSet_label = []

get_data_set(trainingSet, trainingSet_data, trainingSet_label,
testSet, testSet_data, testSet_label)
# print(trainingSet_data)
# print(trainingSet_label)

# 线性回归方程
regr = linear_model.LinearRegression()
regr.fit(trainingSet_data, trainingSet_label)

print("系数")
print(regr.coef_)
print("截距: ")
print(regr.intercept_)

# 预测
yPred = regr.predict(testSet_data)

print("####" * 10)
print("前十组测试数据的详细情况:")
print("####" * 10)
print("预测值:")
print(yPred[0:10])
print("实际值:")
print(testSet_label[0:10])
accuracy = (yPred[0:10] - testSet_label[0:10]) / testSet_label[0:10]
print("测试集前十组数据的准确率为:")
print(accuracy)

print("####" * 10)
print("测试集整体情况:")
print("####" * 10)
accuracy_all = np.mean((yPred - testSet_label) / testSet_label)
print("测试集的准确率为:%.2f" % accuracy_all)

# 将数据写如Excel
write_excel(yPred, testSet_data, testSet_label)

print("完成")

if __name__ == '__main__':
main()

更多详细内容:

python中使用xlrd、xlwt操作excel表格详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python xlrd xlwt