用于 CSV 处理的 10 个有用的 Python OneLiners

使用 CSV?这些 Python 语句使常见的文件操作更快、更简洁。

来源:KDnuggets
图片由编辑提供

# 简介

#

CSV 文件在数据工作流程中随处可见,从数据库导出到 API 响应再到电子表格下载。虽然 pandas 效果很好,但有时您需要快速解决方案,可以使用 Python 进行编码,而无需安装 pandas。

Python 的内置 csv 模块与列表推导式和生成器表达式相结合,可以在一行代码中处理最常见的 CSV 任务。这些单行代码非常适合快速数据探索、ETL 调试,或者当您在外部库不可用的受限环境中工作时。

让我们使用包含 50 条记录的示例业务数据集:data.csv 并开始吧!

数据.csv

🔗 GitHub 上代码的链接

GitHub 上代码的链接

# 1. 求列总和

计算所有行中任意数字列的总和。

print(f"总计:${sum(float(r[3]) for r in __import__('csv').reader(open(path)) if r[0] != 'transaction_id'):,.2f}")

这里,path 是保存示例 CSV 文件路径的变量。对于此示例,在 Google Colab 中,路径为“/content/data.csv”。

路径 路径 = "/content/data.csv"

输出:

这里,__import__('csv') 内联导入内置的 CSV 模块。生成器表达式会跳过标题行,将列值转换为浮点数,对它们求和,并使用货币符号进行格式化。根据需要调整列索引 (3) 和标题检查。

__import__('csv')

# 2. 按最大值分组

查找数据集中哪个组的聚合值最高。

print(max({r[5]: sum(float(row[3]) for row in __import__('csv').reader(open(path)) if row[5] == r[5] and row[0] != 'transaction_id') for r in __import__('csv').reader(open(path)) if r[0] != 'transaction_id'}.items(), key=lambda x: x[1]))
('迈克·罗德里格斯', 502252.0)

字典理解按第 5 列分组,对每组的第 3 列值求和。第一遍收集组密钥,第二遍进行聚合。带 lambda 的 max() 可找到最高的总数。调整不同分组操作的列索引。

max() 企业 "\n".join(...) 100000