python进⾏excel随机抽样
最近需要对多个excel中数万条数据进⾏随机抽样,采⽤python进⾏。
excel读取和写⼊使⽤openpyxl第三⽅库。
随机抽样使⽤random.sample函数。
(抽取遇到的最⼤问题是不知道如何读取指定⼀⾏,采取直接读取的ws这样⽣成的是⼀个⽣成器对象,并不能写⼊,⼀直遇到提⽰错误
ValueError: Cells cannot be copied from other worksheets
最后采取⾃定义函数的⽅式,还是得单个单元格读取value,⼀⾏⼀⾏读出来。)
初学python,⽅法笨拙,如果各位有更好的处理⽅法,万望赐教。
代码:
import openpyxl
import random
#定义⼀个函数,获取excel指定⾏的数据。
def get_row_value(ws,row):
col_num=ws.max_column
row_data=[]
for i in range(1,col_num+1):
cell_ll(row=row,column=i).value
row_data.append(cell_value)
return row_data
file_name_list=[]#将⽂件名集合放在⼀个列表。
for file_name in file_name_list:
#读取
wb=load_workbook(file_name)
sheet=wb.active
row_num=sheet.max_row
random_num=random.sample(range(2,row_num+1),20)#随机抽取20个样本,第⼀⾏是表头,不取。
#写⼊⼀个新的excel表格
wb2=openpyxl.Workbook()
sheet2=wb.active
sheet2.append(get_row_value(sheet,1))#⾃定义的函数,传⼊两个参数,⼀个是前⽂读取的⽂件,⼀个是要读取的⾏数。
#读取随机抽取的⾏数并写⼊。
for i in random_num:
row=get_row_value(sheet2,i)
sheet.append(row)
sheet.append(['⽣成的随机数为:']+random_num)
#保存
out_file_name=file_name+'_out.xlsx'
wb.save(out_file_name)random python
print('抽样成功')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论