Python按行打乱Excel表格数据 您所在的位置:网站首页 怎么打乱excel表里的数据排序 Python按行打乱Excel表格数据

Python按行打乱Excel表格数据

2024-07-02 01:00| 来源: 网络整理| 查看: 265

因做数学建模比赛,需要打乱训练数据,于是用python写了个简单的小程序,作用就是按行打乱Excel表格。

先说一下需要使用的第三方库openpyxl

Openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库,其功能非常强大。Excel表格可以理解为一个二维矩阵,行用1,2,3,4,5.....等表示,在Openpyxl可以用来作为行索引。列用A,B,C,D,E,F.......表示,在Openpyxl中可以用来当做列索引,描述一个单元格的位置需要一个行标、一个列标。如A1表示第一行第一列对应的单元格,E4表示第四行第五列对应的单元格。

更多操作方法见https://blog.csdn.net/weixin_43094965/article/details/82226263

效果图

上图原数据,下图打乱后数据

安装openpyxl pip install openpyxl 大体思路

  1. 首先读取Excel表格文件

# 随机按行打乱Excel表格 from openpyxl import Workbook from openpyxl import load_workbook import random # 读取文件 wb = load_workbook('data.xlsx')

  2. 打开当前工作簿

ws = wb.active

  3. 获取行数

ws.max_row

  4. 创建一个从1到最大行数的数字列表,并随机打乱列表

   Python生成随机数的原理是梅森旋转算法,感兴趣的可以了解下

numbers = list(range(1, ws.max_row + 1)) random.shuffle(numbers)

  5. 遍历列表,根据每次随机数字选取一行,并复制到表格末尾

for i in numbers: row = ws[i] r = [] for cell in row: r.append(cell.value) ws.append(r)

  6. 删除原数据,保留复制的数据

ws.delete_rows(1, ws.max_row//2)

  7.遍历工作簿,对所有工作簿数据都进行打乱

for ws in wb: #执行打乱操作 附上全代码 # 随机按行打乱Excel表格 from openpyxl import Workbook from openpyxl import load_workbook import random # 读取文件 wb = load_workbook('data.xlsx') # 显示工作表数量 print("---该文件共" + str(len(wb.sheetnames)) + "个工作表---") def main(): # 打乱所有工作簿 for ws in wb: print("\n---开始打乱工作表[" + str(ws.title) + "]---") # 显示行数 print("---行数:" + str(ws.max_row) + '---') random_data(ws) # 文件另存为data_random.xlsx wb.save('data_random.xlsx') print("\n---文件保存成功---") word = input("\n按下任意键退出") def random_data(ws): """随机打乱数据""" print("---正在打乱数据---") numbers = list(range(1, ws.max_row + 1)) # random()函数采用梅森旋转算法生成伪随机数 random.shuffle(numbers) for i in numbers: row = ws[i] r = [] for cell in row: r.append(cell.value) ws.append(r) ws.delete_rows(1, ws.max_row//2) if __name__ == "__main__": main()

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有