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

news2024/11/15 14:08:27

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技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通。本文将实现了一个万能数据生成类的编写,并使用PyTorch框架训练CNN、RNN和GNN模型。 目录&#xff1…

摄像机控制——旁轴摇移

通常摄像机进行摇移控制的时候,都是以摄像机正前方中心位置作为注视点进行环绕控制的,如果在注释点位置有物体,那么感受上是围绕着该物体进行观察。 但是最近公司的策划要求摇移时候的围绕点是鼠标点击的位置,而不是摄像机的正中心…

零基础网络安全学习路线,真的很全,建议收藏!!!

很多小伙伴在网上搜索网络安全时,会出来网络安全工程师这样一个职位,它的范围很广,只要是与网络安全挂钩的技术人员都算网络安全工程师,一些小伙伴就有疑问了,网络安全现在真的很火吗? 那么今天博主就带大…

从0实现基于Linux socket聊天室-多线程服务器模型(一)

前言Socket在实际系统程序开发当中,应用非常广泛,也非常重要。实际应用中服务器经常需要支持多个客户端连接,实现高并发服务器模型显得尤为重要。高并发服务器从简单的循环服务器模型处理少量网络并发请求,演进到解决C10K&#xf…

AntDB数据库将携创新性解决方案亮相2023可信数据库发展大会

由中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)主办的“2023可信数据库发展大会”将于2023年7月4日——5日在北京国际会议中心召开。作为深耕通信行业15年的国产数据库产品,AntDB受邀参会&…

记录一下kibana启动链接报错问题(kibana server is not ready yet)

记录一下kibana启动链接报错问题(kibana server is not ready yet) 今天启动kibana出现该问题 先去看了看是否是elasticsearch连接出错 启动了容器 docker start elasticsearch docker start kibana进入了kibana容器 docker exec -it kibana bash进行了下面的操作&#xf…

No suitable driver found for

在学习Mbatis时候遇到的奇怪的问题,报错提示如图所示,提示找不到数据库驱动 检查db.properties文件,一开始认为没问题 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis?useSSLfalse&useUnicodetrue&characterEncodingUTF…

华为OD机试真题2023Q1 100分 + 2023 B卷(JavaPythonJavaScript)

目录 2023 5月 B卷 “新加题”(100分值)2023Q1 100分下面分享一道“2023Q1 200分 机器人活动区域”的解题思路一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 大家好,我是哪吒。 五月份之前…

react基础-生命周期render props模式高阶组件原理揭秘

组件生命周期(★★★) 目标 说出组件生命周期对应的钩子函数钩子函数调用的时机 概述 意义:组件的生命周期有助于理解组件的运行方式,完成更复杂的组件功能、分析组件错误原因等 组件的生命周期: 组件从被创建到挂…

通用机器人里程碑?谷歌展示全球首个多任务AI智能体

目录 两大硬核科技支撑通用机器人研发(1)自生成训练数据(2)基于多模态模型 科技巨头同台比拼 中国产业链凸显性价比优势发展初期硬件先行 运动模块价值量最高 已学会套圈、搭积木、抓水果…… 人工智能和机器人,总是不…

MES生产管理系统与ERP系统的集成以及优势

导言: 在当今数字化转型的浪潮中,企业越来越意识到整合各个部门的数据和流程的重要性。MES生产管理系统和ERP系统是两个关键的管理工具,它们在企业中发挥着不可或缺的作用。本文将探讨企业MES管理系统与ERP系统进行集成,以及这种…

它如何做到让我们持久且不感疲劳

写在前面 随着科技的进步和数字化生活的兴起,人们长时间使用显示器的需求增加,越来越多的人戴眼镜并且面临眼睛问题。显示器屏幕灯在当今社会也逐渐扮演着不可或缺的角色。 首先,显示器屏幕灯能够提供必要的亮度,确保我们在各种…

pyhton-docx表格合并单元格

合并单元格需要指定两个单元格, from docx_utils import set_table_singleBoard from docx import Documentdocument Document() table document.add_table(rows3, cols3) # 创建一个包含 3 行 3 列的表格 table.cell(0, 0).merge(table.cell(0, 1)) # 合并第一…

用正则表达式进行input框的限制输入

vue项目可以用input事件输入 1.限制input输入框只能输入大小写字母、数字、下划线的正则表达式&#xff1a; 用户名< input type"text" placeholder"只包含数字字母下划线" onkeyup"this.valuethis.value.replace(/[^\w_]/g,);"> 2.限…

linux如何修改sudoers文件,将非root用户加入到 sudoers 文件中

需求 由于在非 root 用户下执行 sudo 命令会报错 cc 不在 sudoers 文件中。此事将被报告。所以需要将 cc 这个用户加入到 sudoers 文件中进行授权 解决 要修改 sudoers 文件&#xff0c;您需要以 root 用户身份进行操作。以下是一种常见的方法&#xff1a; 1、使用 root 用…

Linux文件管理(创建 删除 复制 剪切 打包 压缩 解压缩)全总结

目录 一、Linux下文件命名规则 1、可以使用哪些字符&#xff1f; 2、文件名的长度 3、文件名的大小写 4、Linux文件扩展名 二、Linux下的文件管理 1、文件夹创建 ① mkdir创建文件夹 ② mkdir -p递归创建文件夹&#xff08;目录&#xff09; ③ 使用mkdir同时创建多个…

nacos批量信息获取-GitNacosConfig

声明&#xff1a;文中涉及到的技术和工具&#xff0c;仅供学习使用&#xff0c;禁止从事任何非法活动&#xff0c;如因此造成的直接或间接损失&#xff0c;均由使用者自行承担责任。 点点关注不迷路&#xff0c;每周不定时持续分享各种干货。 原文链接&#xff1a;众亦信安&a…

Leetcode-每日一题【234.回文链表】

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1]输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;head…

【Golang | runtime】runtime.Caller和runtime.Callers的使用和区别

环境&#xff1a; go version go1.18.2 1、runtime.Caller 函数func runtime.Caller(skip int) (pc uintptr, file string, line int, ok bool) 作用 获取函数Caller的调用信息 参数 skip: 0时&#xff0c;返回调用Caller的函数A的pc(program counter)、所在文件名以及Cal…

SI12T触摸按键芯片兼容TMS12资料

Si12T 是一款具有自动灵敏度校准功能的 12 通道电容传感器&#xff0c;其工作电压 范围为 1.8 ~ 5.0 V 。 Si12T 设置 IDLE 模式来节省功耗&#xff0c;此时&#xff0c;功耗电流为 3.5 A3.3V 。 Si12T 有三种特殊功能&#xff1a;一种是通道 1 上的嵌入式电源键…