pandas读取Excel每一行转为列表的两种方式

本文探讨了使用Python的pandas库处理大型Excel文件时,iterrows()方法与enumerate()方法的性能差异。iterrows()可能较慢且消耗内存,而enumerate()虽然可能导致内存占用高,但遍历速度快。
摘要由CSDN通过智能技术生成

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

方法1

  • 缺点:

  • 函数使用了 pandas 的 iterrows() 方法来遍历 DataFrame,这种方法在处理大型数据集时可能会相对较慢,因为它会创建 Series 对象,对内存和 CPU 都有一定的开销。

# -*- coding: UTF-8 -*-
'''
@Project :测试 
@File    :test2.py
@IDE     :PyCharm 
@Author  :一晌小贪欢(278865463@qq.com)
@Date    :2024/3/25 21:46 
'''

import pandas as pd
import time


def main():
    t1 = time.time()
    # 使用 openpyxl 引擎读取 Excel 文件
    df = pd.read_excel('test.xlsx', engine='openpyxl')

    # 输出每一行的行号和数据
    for index, row in df.iterrows():
        print(f"行号: {index}, 数据: {row.tolist()}")

    t2 = time.time()
    print(f"读取 Excel 文件并输出行号和数据耗时:{t2 - t1} 秒")
    
main()

在这里插入图片描述

方法2

  • 特点:

  • 使用了 enumerate(df.values.tolist()) 来遍历 DataFrame 的值,这种方式将整个 DataFrame 转换为 list,然后进行遍历。如果数据集非常大,一次性转换为 list 可能会导致内存占用较高,但遍历速度通常比 iterrows() 快。

def main2():
    t1 = time.time()
    # 使用 openpyxl 引擎读取 Excel 文件
    df = pd.read_excel('test.xlsx', engine='openpyxl')

    # 输出每一行的行号和数据
    for index, row in enumerate(df.values.tolist()):
        print(f"行号: {index}, 数据: {row}")

    t2 = time.time()
    print(f"读取 Excel 文件并输出行号和数据耗时:{t2 - t1} 秒")

main2()

在这里插入图片描述

结尾

希望对大家有帮助

致力于办公自动化的小小程序员一枚

都看到这了,关注+点赞+收藏=不迷路!!

如果你想知道更多关于Python办公自动化的知识各位佬给个关注吧!

Python中,将图片中的表格内容转换成Excel数据通常涉及到两个步骤:图像识别和表格提取。一种常见的方式是使用OCR(Optical Character Recognition,光学字符识别)技术结合库如`pytesseract`(Tesseract OCR的一个Python包装)来读取图像中的文本,然后使用`pandas`库将读取到的数据组织成DataFrame,最后保存为Excel文件。 以下是一个简单的示例: ```python import pytesseract from PIL import Image import pandas as pd # 1. 加载图片 img = Image.open('your_image_file.jpg') # 2. 使用OCR识别文字 text = pytesseract.image_to_string(img, lang='chi_sim') # 选择合适的语言支持 # 3. 将文字分隔成行并处理列表 data_rows = text.split('\n') # 假设表格每一行是一个单独的字符串 # 4. 创建DataFrame header_row = data_rows[0] # 如果第一行是表头,可以提取出来作为列名 data_rows = data_rows[1:] # 排除表头 data = [row.split('\t') or row.split(',') for row in data_rows] # 根据表格的分割符(这里是制表符或逗号) df = pd.DataFrame(data[1:], columns=data[0]) # 列名转为列 # 5. 导出到Excel df.to_excel('output.xlsx', index=False) ``` 请注意,这只是一个基本示例,实际操作可能会因为表格样式、复杂度(如合并单元格、非标准字体等)而有所变化。如果需要更精确地解析复杂的表格,可能需要使用专门针对表格数据的库,比如`tabula-py`(用于PDF表格)或`camelot-py`(支持多种格式的表格)。此外,对于识别率低的情况,可能需要调整OCR引擎的参数,或者手动清理识别结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一晌小贪欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值