pandas的I/O相对各类包一直偏慢且存在易用性问题,特别是对于大文件的读写,瓶颈非常明显。pandasrw 库
通过将各类库进一步封装,提高了pandas 读写excel、csv等文件的性能和易用性。
# 安装
```
pip install pandasio
```
github 项目
[https://github.com/stormtozero/pandasio](https://github.com/stormtozero/pandasio)
# 一、常用API
## 1、加载表
```
df=load(file_path, col_name=None,sheetname='Sheet1',engine="polars")
```
示例:输入路径读取Sheet1表的全部列,生产pandas的DataFrame 默认使用polars引擎。该表可以是xlsx、
xlsx、csv和pkl格式
```
df=load(file_path)
```
## 2、写入表
```
dump(df,file_path,sheetname='Sheet1',engine="polars")
```
示例:输入路径,将pandas的DataFrame写入Sheet1表,默认使用polars引擎。该表可以是xlsx、xlsx、csv和
pkl格式
```
dump(df,file_path)
```
## 3、流式加载表
file_path是路径, row_count是每次读取的行。
```
load_stream_row(file_path, row_count,col_name=None)
```
生成一个pandas.io.parsers.readers.TextFileReader对象。
对于该迭代器对象,通过遍历迭代器分块运算
3.1、遍历迭代器
3.2、对于迭代器中的每个DataFrame进行运算
3.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)
```
## 4、将csv转化为utf8编码
```
encode_to_utf8(filename, des_encode):
```
## 5、将xlsx转换为csv
会在file_path文件夹下生成一个同名csv文件
```
xlsxtocsv(file_path)
```
# 二、功能特点
## 1、性能提升
通过封装polars、pandas、xlwings库实现性能的提升和保证兼容性。通过参数engine来选择采用的读写引
擎,默认采用polars库。对于polars和xlwings不支持的格式后端自动选择pandas进行兼容。各类引擎的特点如下。
polars库:
一个rust写的高性能库。读写快,支持xlsx和csv文件类型,其中xlsx为通过xlsx2csv库转换为csv来实现。兼容
性较好,但是不如pandas。xlsx可以比pandas快2倍,csv可以快3倍.
建议:推荐使用。截至2023年3月该库的star已经超过1.3k,性能和质量已经经过检验。
pandas库:
支持xlsx、xls、csv、pkl四种文件类型,读写较慢,但是兼容性最好。
建议:备选。
xlwings库:支持xlsx和xls两种文件类型,该库本身支持csv,但是在测试时性能较差未采用。
读写xlsx文件速度最快,可以达到pandas的3倍,但是在数据类型推断上较为粗糙,数据类型只能区分为object
和float64两种类型,不能进一步区分int64等类型。本库通过调用 win32实现对excel的操作,需要使用
windows操作协同且安装了excel软件。
建议:在excel数据较大一般超过100M时使用,且对细分数据类型不敏感或者采用手动修改数据类型的场景。
## 2、易用性提升
易用性方面主要做了以下两个方面的提升
2.1、对csv格式的编码自动修改为utf-8解决了 “'utf-8' codec can't decode”等编码类报错。
2.2、对各类后缀进行了自适应,无需在手动指定excel、csv、pickle等
# 三、转为pickle读写
如果一个较大的表会多次使用,请转pickle存储,后续读写pickle文件会大大加快读写性能。本库的读写函数支
持pkl格式文件的读写。
没有合适的资源?快使用搜索试试~ 我知道了~
pandas和excel、csv高效读写的增强库-pandasrw
共12个文件
py:4个
txt:3个
whl:1个
需积分: 2 0 下载量 141 浏览量
2023-04-03
10:06:19
上传
评论
收藏 15KB ZIP 举报
温馨提示
pandas的I/O相对各类包一直偏慢且存在易用性问题,特别是对于大文件的读写,瓶颈非常明显。pandasrw 库通过将各类库进一步封装,提高了pandas 读写excel、csv等文件的性能和易用性。 这个库是本人发布在github的一个项目,欢迎大家交流,方便的时候的给个star。pandasrw的名称是pandas read和write的缩写,目前支持excel、csv和pickle文件的读写。 https://github.com/stormtozero/pandasrw 从性能提升、易用性提升和流式加载方面对pandas的表格数据读写进行了增强。其中在性能提升方面可以提升2-3倍的性能,在易用性方面封装了编码转换和文件类型自动识别。此外还实现了三个小功能,一个简单的流式加载和计算的功能、csv的编码转换功能和xlsx转换为csv的功能。
资源推荐
资源详情
资源评论
收起资源包目录
pandasrw.zip (12个子文件)
pandasrw
__init__.py 2B
setup.py 776B
pandasrw.py 6KB
readme.md 4KB
dist
pandasrw-0.0.2-py3-none-any.whl 3KB
pandasrw-0.0.2.tar.gz 3KB
build
bdist.win-amd64
lib
pandasrw.py 6KB
pyproject.toml 484B
pandasrw.egg-info
SOURCES.txt 163B
top_level.txt 9B
PKG-INFO 503B
dependency_links.txt 1B
共 12 条
- 1
资源评论
风暴之零
- 粉丝: 1884
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功