Python3,处理Excel文件IO流的方法那么多,或许只有Pandas算得上靠谱。

举报
Carl_奕然 发表于 2023/07/06 09:49:41 2023/07/06
919 0 0
【摘要】 网友:还是Pandas靠谱

1、引言


小云:鱼哥, 求助。
小鱼:你要请客?
小云:… 是求助。
小鱼:你要请吃饭?
小云:… 是求助啊, 遇到不会的问题, 需要像你请教。
小鱼:你要请我按脚?

在这里插入图片描述
小鱼:这是咋了, 还急眼了?
小云:我这遇到不会的, 你宁愿去"消费",也不帮我处理。
小鱼:… 我没说不把你解决问题啊。
小云:这就好, 这就好。
小鱼:那你说,遇到啥问题了, 给你整成这样。
小云:就是,excel数据的io流如何处理?
小鱼:就这啊。
小云:对啊,
小鱼:那有什么硬性要求吗?
小云:没有,
小鱼:那妥妥的了。

在这里插入图片描述
2、代码实例


2.1 什么是文件IO流


要想处理问题,那就需要先了解问题的本质。
这里, 什么是文件IO流。

2.1.1定义


文件IO流是指用于读取和写入文件的数据流。

2.1.2 字节流、字符流


在Java中,文件IO流主要有字节流和字符流两种类型。

字节流(Byte Stream)是以字节为单位进行读写的流,

  • 主要包括InputStream和OutputStream。
  • 常用的字节流类有FileInputStream、FileOutputStream等。

字符流(Character Stream)是以字符为单位进行读写的流,

  • 主要包括Reader和Writer。
  • 常用的字符流类有FileReader、FileWriter等。


2.2 常见的Excel文件IO流处理方法


这里,我也例举一下常见的文件IO流处理方法,大概4种,如下;

Apache POI:

  • Apache POI是一个开源的Java库,提供了读取和写入Excel文件的功能。
  • 它支持读取和写入各种Excel文件格式,如xls和xlsx。
  • 使用POI可以方便地操作Excel文件的各种元素,如单元格、行、列等。

JExcelAPI

  • JExcelAPI是一个开源的Java库,用于读取和写入Excel文件。
  • 它支持xls格式的Excel文件,提供了简单易用的API来操作Excel文件。

EasyExcel

  • EasyExcel是阿里巴巴开源的一个Java库,用于读取和写入Excel文件。
  • 它支持读取和写入xls和xlsx格式的Excel文件,提供了简单易用的API,可以快速处理大量数据。

Apache POI + Apache POI-OOXML

  • 如果需要同时支持xls和xlsx格式的Excel文件,可以结合使用Apache POI和Apache POI-OOXML。
  • Apache POI用于处理xls格式的文件,Apache POI-OOXML用于处理xlsx格式的文件。


以上这些,就是常用的处理IO流的方式。
但是, 今天,我们却以另一种方式来处理。
就是 下面的主角了:pandas。

在这里插入图片描述
2.3 Pandas处理Excel文件IO流


2.3.1 直接读取处理


代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-07-02
# @Author : Carl_DJ
'''
实现内容:
    先把数据下载落地成本地excel文件,在用pandas读取文件,并进行处理。
'''

with open("./data/testio.xlsx", mode="wb") as f:
f.write(response.content)
# 读取Excel文件, 指定列的excel数据
df = pd.read_excel(io="./data/testio.xlsx", usecols=cols, na_values='#N')


2.3.2 转换io流进行处理


代码示例

# -*- coding:utf-8 -*-
# @Time   : 2023-07-02
# @Author : Carl_DJ
'''
实现内容:
    在过程中直接将请求结果转换成io流,并以io流的形式传递给pandas。
'''

import io
response = requests.get(url, headers=headers, cookies=json.loads(cookies), params=params)
file_stream = io.BytesIO(response.content)
excel_file = pd.ExcelFile(file_stream)
sheet_list = excel_file.sheet_names # 获取excel的所有sheet

# 遍历所有工作表并输出数据
for index, sheet in enumerate(sheet_list):
  df = pd.read_excel(io=excel_file, sheet_name=sheet)
  # 替换Excel表格内的空单元格,否则在下一步处理中将会报错
  df.fillna("", inplace=True)
  column_list = df.columns


3、总结


小屌丝:鱼哥,看这两段代码, 除了第一段比第二段代码量少一些,其他的有啥呢?
小鱼:第二段代码,下载 即可处理, 第一段代码,下载,写,读,需要3次呀。
小屌丝:哦,这样啊, 难怪呢。

看到这里,今天的分享就差不多该结束了。
其实在实际工作中, 使用Pandas对数据的处理,很常见,尤其我们这种数据分析,数据挖掘等类工作。

所以,学好Pandas,走到哪里都不怕。

我是小鱼:

  • CSDN 博客专家;
  • 阿里云 专家博主;
  • 51CTO博客专家;
  • 51认证讲师等;
  • 认证金牌面试官;
  • 职场面试及培训规划师;
  • 多个国内主流技术社区的认证专家博主;
  • 多款主流产品(阿里云等)测评一、二等奖获得者;


关注我,带你学习更多更专业更前言的Python技术。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。