最近参加的数模比赛中需要处理有几百万行数据的EXCEL表格,刚刚接到这个任务时头是有点发昏的,大一的时候虽然学过Python,但还没有真正实现过用Python处理大数据。以题目中的附件一为例:附件一有60多万条数据附件二也有60多万条,加起来总共差不多有120多万条(有一题就是要我们筛选其中的某些数据。由于本人对EXCEL的不熟悉以及对编程的喜爱,因此在网上
搜索了不少关于如何用Python去处理大数据的方法:有很多方法,比如xlrd,pandas,openpyxl等等,本人在这里使用的是openpyxl。
①首先来看其中一个问题 ,在下面这样一个表中,需要我们根据create_dt这个属性计算出每天的日营业额及成本,也就是将日期相同的商品的售价及成本相加即可,代码如下:并将生成的表格记为“日营业额及成本(附件2).xlsx”
import openpyxl
from openpyxl import load_workbook
# 新建一个xlsx文件
wb = openpyxl.Workbook()
ws = wb.active
ws.cell(1, 1, '日期')
ws.cell(1, 2, '日营业额')
ws.cell(1, 3, '日成本')
# ws.cell(1, 4, '日利润')
workbook = load_workbook('补全并筛选后的表格(附件2).xlsx')
sheet = workbook['Sheet1']
num = sheet.max_row
k = 2
sums: int = sheet.cell(2, 6).value * sheet.cell(2, 8).value
sumt: int = sheet.cell(2, 6).value * sheet.cell(2, 9).value
judge = sheet.cell(2, 1).value
ws.cell(2, 1, sheet.cell(2, 1).value)
for i in range(3, num+1):
if sheet.cell(i, 5).value == 1 and sheet.cell(i, 6).value > 0:
if sheet.cell(i, 1).value == judge:
sums += (sheet.cell(i, 6).value * sheet.cell(i, 8).value)
sumt += (sheet.cell(i, 6).value * sheet.cell(i, 9).value)
if i == num:
ws.cell(k, 2, sums)
ws.cell(k, 3, sumt)
else:
ws.cell(k+1, 1, sheet.cell(i, 1).value)
ws.cell(k, 2, sums)
ws.cell(k, 3