本文介绍: pandasrw库有效提升了pandas 读取excelcsv表格性能和易用性,大大方便了新手使用可以有效解决下列问题pandasrw的名称pandas readwrite的缩写,目前支持excelcsvpickle文件读写。本库与pandas高度兼容读取文件生成pandas的DataFrame,后续各种操作pandas相同。通过pip进行安装python导入包。

pandasrw库有效提升了pandas 读取excelcsv表格性能和易用性,大大方便了新手使用可以有效解决下列问题pandasrw的名称pandas readwrite的缩写,目前支持excelcsvpickle文件读写。本库与pandas高度兼容读取文件生成pandas的DataFrame,后续各种操作pandas相同。

https://github.com/stormtozero/pandasrw

通过pip进行安装

pip install pandasrw

python导入

from pandasrw import load,dump

问题一、后缀不对导致无法读取

1、报错utf-8’ codec can’t decode byte 0x87 in position 10: invalid start byte
下面代码文件xlsx,却用read_csv会报上面的错误

path1=r"D:data2023xx.xlsx"
pd.read_csv(path1)

2、报错 Excel file format cannot be determined, you must specify an engine manually.
下面代码文件csv,却用read_excel会包上面的错误

path1=r"D:data2023xx.csv"
pd.read_excel(path1)

解决方法 使用pandasrw库中的load函数,该函数适应文件后缀,无需再考虑文件后缀

from pandasrw import load
df=load(path1)

问题二、编码方式不对导致无法读取

pandas 读取CSV,错误:‘utf-8‘ codec can‘t decode byte 0xb7 in position 24: invalid start byte

原因为无法文件不是utf-8编码

解决方法 使用pandasrw库中的load函数,该函数自适应文件的编码方式,无需再考虑编码方式

from pandasrw import load
df=load(path1)

问题三、pandas怎么追加写入excel

pandas 最常用的to_excel追加功能需要创建ExcelWriter来实现过程繁琐。

解决方法 使用pandasrw库中的dump函数,使用参数mode=“a”。

from pandasrw import load
dump(df, file_path, mode="a", sheetname='Sheet1')

问题四、pandas无法从指定单元格开始写入excel

pandas只能从A1单元格开始写入内容需要指定写入文件开始单元格的情况时,引擎必须使用xlwings库,既engine == “xlwings”,如从B2开始写示例如下
解决方法 使用pandasrw库中的dump函数,使用参数cell=‘B2’

from pandasrw import dump
dump(df, file_path, mode="a", sheetname='Sheet1',engine="xlwings", cell='B2')

问题五、pandas写入excel时,无法给后缀添加写入时间

pandas写入excel时无法给后缀加上写入时间需要许多额外代码

解决方法 使用pandasrw库中的dump函数,当参数 time=True 时能够在文件后缀自动添加写入时间的功能,时间格式为 -年月日_时分

from pandasrw import dump
dump(df, file_path, sheetname='Sheet1', time=True)

问题六、pandas 无法实时查看

当在jupyter交互环境中时,无法使用pandas 无法实时通过excel查看
解决方法: 使用pandasrw库中的view函数,可以在excel中打开DataFrame和文件路径进行查看输入参数f既可以是文件路径可以是DataFrame。

from pandasrw import view
view(f)

问题七、pandas 打开较大的excel时非常慢,如何提速

解决方法: 使用pandasrw库中的load函数,可以比pandas提升2到3倍的读入效率。当文件特别大时将引擎改为xlwings,可以提升更大的效率。

例如:文件超过100M时

from pandasrw import load
df=load(path1,engine="xlwings")

问题八、pandas 无法进行excel的流式加载,文件大于内存时,无法处理

pandas 无法进行excel的流式加载,文件大于内存时,无法进行分批处理
解决方法: 使用pandasrw库中的load_stream_row函数。

file_path是路径, row_count是每次读取的行

from pandasrw import load_stream_row
load_stream_row(file_path, row_count,col_name=None)

生成一个pandas.io.parsers.readers.TextFileReader对象
对于该迭代对象通过遍历迭代分块运算
4.1、遍历迭代器
4.2、对于迭代器中每个DataFrame进行运算
4.3、采用追加写(功能mode=”a”或者mode=“a+”)的方式写入csv
注意:file_result_csv和上文函数中的file_path_csv绝对不能相同,即读取的csv和存入的csv不能同路径。否则会不停的迭代下去,不能退出循环
原因:使用chunksize分块读取后,pandas并没有真正的将csv的内容载入内存,只是解析了csv的内容和建立了连接(类似浅拷贝),在调用迭代器时再从csv中加载。所以再使用追加写的时候,会一边写入csv,一边再从csv中读取,形成死循环

for df in df_iter:
    df=运算结果
    df.to_csv(file_result_csv,mode="a", index=False,encoding='UTF-8',header=False)

示例3:输入路径读取Sheet1表的全部列,生产pandas的DataFrame 默认使用polars引擎。该表可以是xlsx、xlsx、csv和pkl格式
df_iter=load_stream_row(file_path, row_count)

问题九、如何将csv转化为utf8编码

encode_to_utf8(filename, des_encode)

问题十、如何将xlsx转换为csv

使用pandas将xlsx转换为csv,需要先读取xlsx再写入csv;代码多,执行慢。
解决方法: 使用pandasrw库中的load函数,会在file_path文件夹生成一个同名csv文件,本方法速度远远快于上述方法。

from pandasrw import xlsxtocsv
xlsxtocsv(file_path)

原文地址:https://blog.csdn.net/A41915460/article/details/132655150

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27250.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注