python处理大量数据而卡顿,python处理大量数据很慢

大家好,小编来为大家解答以下问题,python处理大量数据存储和读取,用什么库好,python处理大量不重复数据可视化建议,今天让我们一起来看看吧!

Python读写Excel实现大量数据处理

我们经常需要 导入数据到Excel、从Excel导出数据、对Excel中的数据进行处理。

如果 要处理的数据量很大,人工操作非常费时间python小作品代码

我们可以通过Python程序,自动化Excel的数据处理,帮我们节省大量的时间。

读取Excel中的数据

如果我们只是要 读取 Excel文件里面的数据进行处理,可以使用 xlrd 这个库。

首先我们安装xlrd库,执行下面的命令

pip install xlrd==1.2.0

注意:xlrd 新版本只支持 xls 格式,所以我们这里指定安装 1.2.0 老版本,可以支持xlsx格式。

请大家 点击这里,下载 Excel文件 income.xlsx

这个文件里面有 3 个表单,分别记录了2018、2017、2016年 的月收入,如下所示

img

如果我们想用程序统计 2016、2017、2018 三年所有月收入的总和,但是不要包含 打星号 的那些月份。

怎么做?

一步步来,我们先学会如何用Python程序读取Excel单元格中的内容。

xlrd 库里面的 open_workbook 函数打开Excel文件,并且返回一个 Book对象 ,这个对象代表打开的 Excel 文件。

可以通过这个Book对象得到Excel文件的很多信息,比如 获取 Excel 文件中表单(sheet) 的数量 和 所有 表单(sheet) 的名字。

我们可以用如下代码,读取 该文件中表单的数量和名称:

import xlrd

book = xlrd.open_workbook("income.xlsx")

print(f"包含表单数量 {book.nsheets}")
print(f"表单的名分别为: {book.sheet_names()}")

要读取某个表单里单元格中的数据,必须要先获取 表单(sheet)对象

可以根据表单的索引 或者 表单名获取 表单对象,使用如下对应的方法

# 表单索引从0开始,获取第一个表单对象
book.sheet_by_index(0)

# 获取名为2018的表单对象
book.sheet_by_name('2018')

# 获取所有的表单对象,放入一个列表返回
book.sheets()

表单对象所有属性和方法的描述, 可以点击这里,查看官方文档

获取了表单对象后,可以根据其属性得到:

表单行数(nrows)
列数(ncols)
表单名(name)
表单索引(number)

如下

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_index(0)
print(f"表单名:{sheet.name} ")
print(f"表单索引:{sheet.number}")
print(f"表单行数:{sheet.nrows}")
print(f"表单列数:{sheet.ncols}")

获取了表单对象后,可以使用 cell_value 方法,参数为行号和列号,读取指定单元格中的文本内容。如下所示:

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_index(0)

# 行号、列号都是从0开始计算
print(f"单元格A1内容是: {sheet.cell_value(rowx=0, colx=0)}")

运行结果输出

单元格A1内容是: 月份

还可以使用 row_values 方法,参数为行号,读取指定行所有单元格的内容,存放在一个列表中返回。

如下所示:

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_index(0)

# 行号、列号都是从0开始计算
print(f"第一行内容是: {sheet.row_values(rowx=0)}")

运行结果输出

第一行内容是: ['月份', '收入']

还可以使用 col_values 方法,参数为列号,读取指定列所有单元格的内容,存放在一个列表中返回。

如下所示:

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_index(0)

# 行号、列号都是从0开始计算
print(f"第一列内容是: {sheet.col_values(colx=0)}")

运行结果输出

第一列内容是: ['月份', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0]

可以看出,数字以小数的形式返回了。

有了这些方法,我们就可以完成一些数据处理任务了。比如我们要计算 2017年 全年的收入就可以这样

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_name('2017')

# 收入在第2列
incomes = sheet.col_values(colx=1,start_rowx=1)

print(f"2017年收入为: {sum(incomes)}")

那么我们怎么在汇总收入中,去掉包含星号的月份收入呢?

就需要我们查出哪些月份是带星号的,不要统计在内。

参考下面的代码

import xlrd

book = xlrd.open_workbook("income.xlsx")

sheet = book.sheet_by_name('2017')

# 收入在第2列
incomes = sheet.col_values(colx=1,start_rowx=1)

print(f"2017年账面收入为: {int(sum(incomes))}")

# 去掉包含星号的月份收入
toSubstract = 0
# 月份在第1列
monthes = sheet.col_values(colx=0)

for row,month in enumerate(monthes):
    if type
  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值