首页 > 其他分享 >pandas读取大型Excel

pandas读取大型Excel

时间:2024-05-24 14:56:33浏览次数:20  
标签:... 读取 Column list Excel python df pandas row

前言

pandas版本低于2.xengine参数不支持calamine,但是又想提升读取大型Excel的速度,那么还是可以用python-calamine库的

# 安装
pip install python-calamine

示例1

import pandas as pd
from python_calamine import CalamineWorkbook


wb = CalamineWorkbook.from_path(filename)
# sht_names = wb.sheet_names    # 获取所有sheet名
# row_list = wb.get_sheet_by_name(sheet).to_python()
row_list = wb.get_sheet_by_index(0).to_python()
df = pd.DataFrame(row_list)
df.columns = df.iloc[0].values
df.drop(0, inplace=True)
df.reset_index(drop=True, inplace=True)
print(df.head())
print(df.shape)

"""
  Column_1 Column_2 Column_3 Column_4  ... Column_17 Column_18 Column_19 Column_20
0     72.0     32.0     34.0     46.0  ...      78.0      68.0      31.0      97.0
1     46.0     85.0     62.0     62.0  ...      30.0      79.0      28.0      94.0
2     96.0     44.0     80.0      2.0  ...      44.0      30.0      39.0       3.0
3     13.0     26.0     25.0     61.0  ...      69.0      57.0      17.0      89.0
4     15.0     76.0     21.0     74.0  ...      64.0      60.0       4.0      88.0

[5 rows x 20 columns]
(120000, 20)
耗时:2.229128837585449
"""

当然,当你读取一个超大文件时,可能会提示内存分配错误

示例2

import pandas as pd
from python_calamine import CalamineWorkbook


def iter_excel_calamine(file):
    workbook = CalamineWorkbook.from_filelike(file)
    rows = iter(workbook.get_sheet_by_index(0).to_python())
    # headers = list(map(str, next(rows)))
    for row in rows:
        # yield dict(zip(headers, row))
        yield row


tmp_list = []
with open(filename, "rb") as fh:
    for row in iter_excel_calamine(fh):
        tmp_list.append(row)
df = pd.DataFrame(tmp_list)
print(df.head())
print(df.shape)

"""
         0         1         2   ...         17         18         19
0  Column_1  Column_2  Column_3  ...  Column_18  Column_19  Column_20
1      72.0      32.0      34.0  ...       68.0       31.0       97.0
2      46.0      85.0      62.0  ...       79.0       28.0       94.0
3      96.0      44.0      80.0  ...       30.0       39.0        3.0
4      13.0      26.0      25.0  ...       57.0       17.0       89.0

[5 rows x 20 columns]
(120001, 20)
耗时:2.1872622966766357
"""

标签:...,读取,Column,list,Excel,python,df,pandas,row
From: https://www.cnblogs.com/rong-z/p/18210989

相关文章

  • 前端实现导入,导出/纯前端实现将数据导出为excel,将excel数据导入传给后端
    一、下载插件(xlsx如果报错utils未定义就用下面这个版本)[email protected]@2.0.5二、页面中引入import*asXLSXfrom'xlsx';import{saveAs}from'file-saver'; 三、导入/导出表格内容1.导出exportExcel(){  ......
  • 掌握pandas cut函数,一键实现数据分类
    pandas中的cut函数可将一维数据按照给定的区间进行分组,并为每个值分配对应的标签。其主要功能是将连续的数值数据转化为离散的分组数据,方便进行分析和统计。1.数据准备下面的示例中使用的数据采集自王者荣耀比赛的统计数据。导入数据:#2023年世冠比赛选手的数据fp=r"D......
  • 03-Excel基础操作-学习笔记
    本节接着继续介绍排序工具以及一个重要内容分类汇总工具的使用。01自定义排序我们在上一节接触到了使用排序工具,对数字之类的Excel内置的程序可以通过点击操作,但是当超出Excel内置的范围又当如何应对?比如,存在如下场景:针对文字的排序,我们对销售部门所在列进行排序,顺序为“一部......
  • 探究-百万级别excel数据的导入导出
    思路:1.从数据库中读,分批次读取2.多线程去写到一个excel中,3.网页如何不卡界面的方式,下载文件界面显示进度条,不影响主界面,下载完成,网站弹出小框口提示百万级别数据导入导出如何优化?excel导入导出;痛点:1.导入百万级别数据(excel)到DB,有哪些痛点?1)一次加载百万级别数据到内存,发生OOM!2)导......
  • Python使用Argparse读取命令参数
    python编写的脚本需要通过命令参数来做一些参数配置。本文将介绍如何使用argparse来解析命令行参数。这种方法相对于sys.args的方式会简单很多。通过以下的脚本来构建一个简单的配置解析器,解析用户名、密码。importargparseimportsysdefmain():  args=sys.ar......
  • openpyxl 读取 execl
    按列读取数据fromopenpyxlimportWorkbook#创建一个新的Excel工作簿wb=Workbook()#获取第一个工作表worksheet=wb.active#多行数据data=[['Bob',25,'Male'],['Charlie',35,'Male'],['Alice',30,'Engin......
  • Spring Boot中的 6 种API请求参数读取方式
    使用SpringBoot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,SpringBoot中也提供了多种机制来满足不同的API设计要求。接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种,那么赶紧来查漏补缺一下。如果你知道的不止6种,那么告诉大......
  • 记录一个按列内容拆分Excel文件的小方法
    importtkinterastkimportosimporttkinter.filedialogimporttkinter.simpledialogimportpandasaspdimporttkinter.messageboximporttkinter.ttkimporttracebackglobalcolumn,sheet_origlobalcombox_2#按内容分类defsplit_by_group():#获取需......
  • 记录一个按文档长度分割Excel文件的方法
    importtkinterastkimportpandasaspdimporttkinter.filedialogimportosimporttracebackwindows=tk.Tk()####按长度拆分——自定义函数##拆分函数defdivision_by_length(iterable,length):iterable_len=len(iterable)start=0while1:......
  • 记录一次Xlwings操作excel替换内容
    importosimporttkinter.filedialogimportxlwingsasxwclassSubstitute:path=tkinter.filedialog.askdirectory(title='!!!!!!!!!!!!!!!!!请选择excel存放路径')#修改此处替换文本,前为原文本,后为新文本,最后一组后面不需要逗号dict1={'购销合同':'买卖合同','货物运输合......