Python3,处理Excel文件IO流的方法那么多,或许只有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技术。

猜你喜欢

转载自blog.csdn.net/wuyoudeyuer/article/details/131513186