morecsv
morecsv 是一个增强型的 CSV 处理库,旨在为用户提供更便捷、高效的 CSV 文件处理方式,支持自动数据类型处理、多线程读写、数据清洗等功能。
同时,morecsv 也支持将数据画出来。
安装
你可以使用 pip 来安装 morecsv:
pip install morecsv
使用示例
读取 CSV 文件
import morecsv
# 初始化 CSVProcessor 对象
file = morecsv.CSVProcessor('example.csv')
# 读取 CSV 文件
file.get(empty=True)
添加列
file.add_columns(['new_col1', 'new_col2'])
删除列
file.del_columns('column_to_delete')
多线程保存数据
file.save_data_multithreaded()
填充NaN数据
file.fillna('column', value=10)
画图
plot = Plot(file)
plot.plot('x', 'y')
plot.show()
功能特性
自动数据类型处理
在读取 CSV 文件时,自动推断数据类型,如将字符串转换为合适的数值类型。
多线程读写
支持多线程读取和写入 CSV 文件,提高处理大量数据时的性能。
数据操作
- 添加列:可灵活添加单个或多个列,支持处理重复列名的情况。
- 删除列:方便地删除指定列。
数据保存
- 支持单线程和多线程保存数据到 CSV 文件,多线程保存可加快大文件的保存速度。
画图
- 支持多种图表类型:折线图、柱状图、直方图、散点图
- 支持两种绘图库:
plotly.express和matplotlib.pyplot - 支持自定义标题、轴标签等图表属性
API 文档
CSVProcessor 类
初始化
file = morecsv.CSVProcessor('example.csv', log_path=None)
file_path: CSV文件路径log_path: 日志文件路径(可选)
文件操作
get(empty=False)
从文件中读取数据
empty: 是否允许空文件(默认False)
get_with_csv(empty=False)
使用Python内置csv模块读取数据
empty: 是否允许空文件(默认False)
create_csv(file_path, headers=None)
创建新的CSV文件
file_path: 新文件的路径headers: 列标题列表(可选)
数据查看
print_info()
打印数据集信息,包括形状和详细信息
printdata()
打印整个数据集
printhead(rows=5)
打印数据集的前几行
rows: 要显示的行数(默认5)
printtail(rows=5)
打印数据集的后几行
rows: 要显示的行数(默认5)
print_columns()
打印所有列名
数据操作
add_columns(column_name, rows=None, overwrite=False)
添加新列
column_name: 列名(字符串或列表)rows: 空文件时指定行数overwrite: 是否覆盖已存在的列
del_columns(column_name)
删除列
column_name: 要删除的列名
rename_columns(new_column_name)
重命名列
new_column_name: 新列名列表
fill_column(column, fill_data)
填充列数据
column: 列名fill_data: 填充值(整数、字符串、布尔值、浮点数或列表)
fillna(column, value)
填充缺失值
column: 列名value: 填充值
文件保存
save_data_multithreaded(chunksize=1000)
使用多线程保存数据
chunksize: 每个块的大小
save_json(output_file, orient='records')
保存为JSON格式
output_file: 输出文件路径orient: JSON格式(默认'records')
save_excel(output_file, sheet_name='Sheet1', split_sheets=False, chunk_size=1000)
保存为Excel格式
output_file: 输出文件路径sheet_name: 工作表名称split_sheets: 是否分割成多个工作表chunk_size: 每个工作表的行数
文件合并
combine(filepath1, filepath2, axis=0, output_file=None)
合并两个CSV文件
filepath1: 第一个文件路径filepath2: 第二个文件路径axis: 合并方向(0为纵向,1为横向)output_file: 输出文件路径(可选)
Logger 类
初始化
logger = Logger(log_path="D:\\LogFiles\\")
log_path: 日志文件路径(可选)
方法
log(msg)
记录日志信息
msg: 日志消息
default_log_path(place='main')
获取默认日志路径
place: 'main'或'cwd',确定日志文件位置
CSVProcessor.Plot 类
初始化
plot = file.Plot(file, uses='plotly.express') # 或 uses='matplotlib.pyplot'
uses: 指定使用的绘图库,可选 'plotly.express' 或 'matplotlib.pyplot' 请注意:使用CSVProcessor.Plot类时必须传入一个CSVProcessor类作为第一个参数
绘图方法
plot_line(x, y, title=None, x_title=None, y_title=None)
创建折线图
x: x轴数据列名y: y轴数据列名title: 图表标题(可选)x_title: x轴标题(可选)y_title: y轴标题(可选)
plot_bar(x, y, title=None, x_title=None, y_title=None)
创建柱状图
x: x轴数据列名y: y轴数据列名title: 图表标题(可选)x_title: x轴标题(可选)y_title: y轴标题(可选)
plot_histogram(column, bins=None, title=None, x_title=None, y_title="Count")
创建直方图
column: 要创建直方图的数据列名bins: 直方图的箱数(可选)title: 图表标题(可选)x_title: x轴标题(可选)y_title: y轴标题(可选,默认为"Count")
plot_scatter(x, y, color=None, title=None, x_title=None, y_title=None)
创建散点图
x: x轴数据列名y: y轴数据列名color: 用于区分点颜色的列名(可选)title: 图表标题(可选)x_title: x轴标题(可选)y_title: y轴标题(可选)
show()
显示绘制的图表
贡献指南
如果你想为 morecsv 项目做出贡献,请遵循以下步骤:
- Fork 本项目。
- 创建一个新的分支:
git checkout -b feature/your-feature-name。 - 提交你的更改:
git commit -m 'Add some feature'。 - 推送至分支:
git push origin feature/your-feature-name。 - 提交 Pull Request。
许可证
本项目采用 MIT 许可证。 If the superlink doesn't work, please see the GitHub repo.
数据类型支持
基础数据类型
- 数值型:整数、浮点数
- 文本型:字符串
- 布尔值:True/False
- 日期时间:支持标准日期时间格式
特殊数据处理
- 支持自动类型推断
- 支持空值(NaN)处理
- 支持重复值处理
文件格式支持
读取格式
- CSV文件(.csv)
- Excel文件(.xlsx)
导出格式
- CSV文件(.csv)
- Excel文件(.xlsx)
- JSON文件(.json)
性能优化
多线程支持
- 文件读取:支持大文件分块读取
- 文件保存:支持多线程并发写入
内存优化
- 支持数据分块处理
- 支持大文件分片保存
更新日志
v1.0.0
- 新增多种可视化功能:柱状图、直方图、散点图
- 完善API文档
- 增加单元测试覆盖
v0.4.0
- 实现日志功能
- 添加基础绘图类
- 修复若干bug
- 更新测试用例
v0.3.0
- 新增多个功能
- 架构优化
- Bug修复
v0.2.0
- Bug修复
- 新增基础功能
未来规划
数据分析增强
- 基础统计分析
- 数据透视功能
- 数据清洗工具
可视化增强
- 更多图表类型
- 交互式图表
- 自定义主题
性能优化
- 并行处理优化
- 内存使用优化
- IO性能提升
多语言支持
未来版本将提供完整的中文和英文文档支持。
Github
此处可以查看(略微有些老旧的)Github repo
Metadata
Release files for morecsv 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| morecsv-1.0.0.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| morecsv-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.0 kB
Release files / morecsv-1.0.0.tar.gz
| Download URL | morecsv-1.0.0.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
222ed65fc7c926d1be7d1c05cac75b476a5100326ed7f27525372e7f152d2ae9
|
|
BLAKE2b-256 checksum How to use checksums |
e0795435c3cfb6ef46856cfc4f6eaf30ecf50f7ceb8c1a6f06c860b8b7dd0e2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|
Release files / morecsv-1.0.0-py3-none-any.whl
| Download URL | morecsv-1.0.0-py3-none-any.whl |
|---|---|
| Size | 12.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
faf2dab0177c4257ebcc7209f76593b067257dd858e85935b69be00cc31fe881
|
|
BLAKE2b-256 checksum How to use checksums |
6e1ef94286cc7f6f22fc113ce8dc7fa611966970aabbf549f4a43964e443c45e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.1
|