python:xlrd和xlwt处理excel数据

源数据表,是带有一行表头的excel表,数据部分正数、负数、小数都有,主要实现以下几项功能

1、读取数据,随后将数据分为表头,和数据两部分

2、将数据部分做成一个二维数组,源数据的每一列作为二维数组的一行

3、计算二维数组每一行的平均值,存进一个新的二维数组

4、将二维数组的每一行(除最后一行不需要)中为0的数用相应行的平均值替代,存进新的二维数组。对于源数据而言就是,将表格里的除最后一列以外的每一列中为0的数用该列的平均值替代。

5、将表头和最后的二维数组进行转置后按对应顺序写入excel

附录:

python 版本是3.6.4,不知道为什么无法写入xlsx文件,只能写入xls文件。还得继续探索

# _*_ coding: utf-8 _*_
import xlrd
import xlwt

# 返回二维数组
def list_list(sheet):
    sheet_col = sheet.ncols
    list = []
    for i in range(0, sheet_col):
        tmp = sheet.col_values(i)
        del tmp[0]
        list.append(tmp)
    # print(list)
    return list

def draw_aver(list):
    # print(len(list))
    one_list_len = len(list[0])
    list_aver = []
    for i in range(len(list)):
        list_aver.append(round(sum(list[i]) / one_list_len, 2))
    # print(list_aver)
    # print(len(list_aver))
    return list_aver

def replace_num(list, list_aver):
    for i in range(len(list)-1):
        for j in range(len(list[0])):
            if list[i][j] == 0.0:
                list[i][j] = list_aver[i]
    return list

def write_excel(sheet_title, list_new):
    f = xlwt.Workbook()
    sheet_new = f.add_sheet('res')
    for i in range(len(sheet_title)):
        sheet_new.write(0, i, sheet_title[i])
    for i in range(len(list_new)):
        for j in range(len(list_new[0])):
            sheet_new.write(j+1, i, list_new[i][j])
    f.save('res.xls')
    pass


if __name__ == '__main__':
    excel_file = xlrd.open_workbook('1443_15.xlsx')
    sheet = excel_file.sheet_by_index(0)

    # 表头
    sheet_title = sheet.row_values(0)
    # 数据表
    list = list_list(sheet)
    # 平均数集合
    list_aver = draw_aver(list)
    # 把所有为0的书替换为平均数
    list_new = replace_num(list, list_aver)
    # 把新的数据写会excel
    write_excel(sheet_title, list_new)
    pass
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值