详细内容或原文请订阅后点击阅览
用于 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
和
