IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python之excel数据读取与分类累加 -> 正文阅读

[Python知识库]python之excel数据读取与分类累加

python之excel数据处理入门学习(1)

本次使用excel案例为2020年数学建模大赛C题部分示例

一、读取excel

要进行excel处理,首先需要将excel数据读入python中。这里推荐使用openpyxl读取excel文件。具体下载步骤不作讲述,直接上代码:

import openpyxl

wb = openpyxl.load_workbook("1.xlsx")

首先将自己的excel文件放置于工程中,这样可以方便引用。在此博主将文件名改为“1.xlsx”,方便导入

通过该步骤,定义一个wb(workbook)将xlsx文件读入进来了。

二、读取sheet

众所周知,excel结构为 工作簿,sheet,行列单元格

此前已读入wb为workbook,该变量中包含了原xlsx表中的多个sheet,在知道表名的情况下,可以这样引用:

sheet1=wb['mysheet']

在此我们print一下:

print(sheet1)

得到:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIpU9bsu-1662307049291)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220904233307318.png)]

由此可见,这是一个Worksheet类型的变量。

从引用方式可以很清楚地看出workbook与sheet之间的从属关系,那么反过来由从属关系来记忆这样的存储方案是不是也是很容易呢?

既然是从属关系,我们便经常会去遍历整个工作簿中呢sheet,那么遍历应当用到什么?

当然是for循环了!

for sheet in wb:
    a=sheet
    print(a)

通过Worksheet a遍历了整个工作簿。

三、引用单元格

同工作簿和工作表的关系一样,工作表与单元格也是从属关系,单元格有如下属性:

1)单元行

2)单元列

3)单元格内容

可采用如下方式引用单元格。

A1=sheet1['A1']

我们打印一下:

print(sheet1['A1'])

可得到:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xctEmsPY-1662307049292)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220904233009908.png)]

可见A1为Cell类型变量。

要引用单元格中的内容,可采用如下方案:

sheet1['A1'].value,sheet1['A1'].row,sheet1['A1'].column

value为内容,row为行,column为列

有时需要规定单元格的范围,可采用如下定义方案:

rowrange = a['2:6']
columnrange = a['B:C']

这样便定义了行与列的范围,在实际遍历时进行引用。

三、实例

下面通过实例进行进一步的学习:

根据题意统计进项发票信息中各个企业的金额总数,发票数量,有效发票数量

表格信息如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZtEWWyS-1662307049293)(C:\Users\user\AppData\Roaming\Typora\typora-user-images\image-20220904234028176.png)]

1.确定数据结构:

我们要完成题设的统计各个企业金额,发票数量,有效发票数量,首先应当理清这当中的数据结构。

可以得知,若以每个企业为单位的话,每个企业中应当包含金额,发票数量,有效发票数量三个量。

那么我们将企业定义为一个字典,字典下辖金额,发票数量,有效发票数量。

2.文件读取与定义:

确定完数据结构后,便进行xlsx文件的读取,代码如下:

wb = openpyxl.load_workbook("1.xlsx")#打开表格

sheet1=wb['进项发票信息']

codeData={}#定义企业信息字典

3.遍历单元格并进行累加计算

for row in range(2,sheet1.max_row+1):#从第二行开始读取数据
    code=sheet1['A'+str(row)].value #得到公司代码单元格
    jine=sheet1['E'+str(row)].value #得到金额单元格
    fapiao=sheet1['H'+str(row)].value#发票


#确定code存在 企业编号
    codeData.setdefault(code,{'jine':0,'num':0,'youxiao':0})#每个code为一类,定义初始状态
    codeData[code]['num'] +=1
    codeData[code]['jine'] += float(jine)
    if fapiao=="有效发票":
        codeData[code]['youxiao'] += 1

上述首先遍历所有行,得到公司代码,金额,发票单元格信息。

使用codeData.setdefault进行初始定义。这样的好处是,遍历过程中会自动对为存在的企业进行建项,已存在的企业便跳过初始化步骤。

初始化完毕后,对num项进行数量累加,对金额项进行数值累加,对发票项进行条件累加。

最终,查看codeData:

在这里插入图片描述

codeData为一个字典,字典中包括公司代码"E1".“E2”…… 公司代码下又下辖金额jine,数量num,有效发票数量youxiao。

得到字典的保存与写入等更多操作,敬请期待……

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:10:10  更:2022-09-13 11:11:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:00:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码