Pandas处理Excel文件IO流的方法
- 1、引言
- 2、代码实例
- 2.1 什么是文件IO流
- 2.1.1定义
- 2.1.2 字节流、字符流
- 2.2 常见的Excel文件IO流处理方法
- 2.3 Pandas处理Excel文件IO流
- 2.3.1 直接读取处理
- 2.3.2 转换io流进行处理
- 3、总结
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技术。