python读写excel数据(list相关)

主要涉及python对excel的操作

顺手帮朋友处理毕业数据写的小脚本,她的问题如下:

样本前后顺序是固定的。id是升序排列之后的, time_dif表示时间差。想生成新变量count=所在的组里样本的数量。分组的依据为id 和 time_dif,分组规则为在同一id内,从第一个样本开始数,一直到下一个time_dif>5之前的样本分为一组。分组如图所示:
这里写图片描述

朋友给的数据集里开始已经经过了一些预处理,如下:
这里写图片描述
处理思路的话比较简单,相当于在一列数组里,如果下一个数较之上一个数小,那么这个数的值便是这一段小数列的count值,用两个for循环既可以遍历出结果,代码如下:

#在这里我们使用xlrd,xlsxwriter两个包对xlsx进行处理,通过pip或者anaconda进行安装即可

import xlrd
import xlsxwriter

ExcelFile=xlrd.open_workbook(r'C:\Users\Administrator\Desktop\dataexample-excel.xlsx') #打开目标处理xlsx
sheet=ExcelFile.sheet_by_index(0) #定位到索引为0的工作表,即第一个工作表
cols=sheet.col_values(7) #取第8列的数据
del cols[0]
newcols = []
groupNum = 1
num = 0
try:
    for i in cols:
        if (cols[num+1]>i):
            groupNum=groupNum+1
            num = num+1
        else:
            for i in range(0,groupNum) :
                newcols.append(groupNum)
            groupNum = 1;
            num = num + 1
#遍历到最后一个数的时候会发生索引溢出,所以catch一下,不影响后续操作
except IndexError:  
    print newcols

#在写入数据的时候,我本来是打算用xlwt的,但是由于处理的数据量较大,因此用xlwt会发生错误ValueError:row index (65536)not an intin range(65536),在查阅资料后选择了xlsxwriter进行写入,最大能够支持1048576行数据,16384列数据。

workbook = xlsxwriter.Workbook('result.xlsx')  #生成表格
worksheet = workbook.add_worksheet(u'sheet1')	#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
worksheet.set_column('A:A',20) 	#设置第一列宽度为20像素
bold=workbook.add_format({'bold':True}) #设置一个加粗的格式对象

for i in range(len(newcols)): 
    worksheet.write('A%s'%str(i+1),newcols[i])  #循环写处理后的数据生成的列表

workbook.close()

参考文献:
【1】http://blog.csdn.net/dongyouyuan/article/details/52681617
【2】https://www.cnblogs.com/jessicaxu/p/7847046.html

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python有多个库可以读写Excel文件,其比较常用的有: 1. openpyxl:一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。 2. xlrd/xlwt:用于读写Excel 97-2003 .xls文件的Python库。 3. pandas:pandas库可以读取和写入多种文件格式,包括Excel文件。 下面分别介绍使用这三个库的方法: ### 1. 使用openpyxl 安装openpyxl库: ``` pip install openpyxl ``` 读取Excel文件: ```python from openpyxl import load_workbook # 打开Excel文件 wb = load_workbook(filename='example.xlsx', read_only=True) # 选择工作表 ws = wb['Sheet1'] # 读取单元格数据 cell_value = ws.cell(row=1, column=1).value print(cell_value) # 遍历行 for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell.value) # 遍历列 for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): for cell in col: print(cell.value) # 读取整个工作表的数据,返回一个嵌套列表 data = [] for row in ws.iter_rows(min_row=1): row_data = [] for cell in row: row_data.append(cell.value) data.append(row_data) print(data) ``` 写入Excel文件: ```python from openpyxl import Workbook # 创建Excel文件 wb = Workbook() # 选择工作表 ws = wb.active # 写入单元格数据 ws['A1'] = 'Hello' ws.cell(row=1, column=2, value='World') # 写入多行数据 data = [['Name', 'Age', 'Gender'], ['Tom', 18, 'Male'], ['Lucy', 20, 'Female']] for row in data: ws.append(row) # 保存Excel文件 wb.save('example.xlsx') ``` ### 2. 使用xlrd/xlwt 安装xlrd和xlwt库: ``` pip install xlrd pip install xlwt ``` 读取Excel文件: ```python import xlrd # 打开Excel文件 wb = xlrd.open_workbook('example.xls') # 选择工作表 ws = wb.sheet_by_name('Sheet1') # 读取单元格数据 cell_value = ws.cell_value(0, 0) print(cell_value) # 遍历行 for row in range(ws.nrows): for col in range(ws.ncols): cell_value = ws.cell_value(row, col) print(cell_value) # 读取整个工作表的数据,返回一个嵌套列表 data = [] for row in range(ws.nrows): row_data = [] for col in range(ws.ncols): cell_value = ws.cell_value(row, col) row_data.append(cell_value) data.append(row_data) print(data) ``` 写入Excel文件: ```python import xlwt # 创建Excel文件 wb = xlwt.Workbook() # 选择工作表 ws = wb.add_sheet('Sheet1') # 写入单元格数据 ws.write(0, 0, 'Hello') ws.write(0, 1, 'World') # 写入多行数据 data = [['Name', 'Age', 'Gender'], ['Tom', 18, 'Male'], ['Lucy', 20, 'Female']] for row, row_data in enumerate(data): for col, cell_value in enumerate(row_data): ws.write(row+1, col, cell_value) # 保存Excel文件 wb.save('example.xls') ``` ### 3. 使用pandas 安装pandas库: ``` pip install pandas ``` 读取Excel文件: ```python import pandas as pd # 读取Excel文件 df = pd.read_excel('example.xlsx', sheet_name='Sheet1') # 读取单元格数据 cell_value = df.iloc[0, 0] print(cell_value) # 遍历行 for index, row in df.iterrows(): print(row['Name'], row['Age'], row['Gender']) # 读取整个工作表的数据,返回一个DataFrame对象 data = df.values.tolist() print(data) ``` 写入Excel文件: ```python import pandas as pd # 创建DataFrame对象 df = pd.DataFrame({'Name': ['Tom', 'Lucy'], 'Age': [18, 20], 'Gender': ['Male', 'Female']}) # 写入Excel文件 df.to_excel('example.xlsx', sheet_name='Sheet1', index=False) ``` 以上是使用Python读写Excel的常用方法,可以根据实际需求选择不同的库和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值