如何统计多个CSV文件指定列的唯一值数量并生成汇总表?
统计多个CSV文件指定列的唯一值数量并生成汇总DataFrame
实现思路
- 批量匹配目标CSV文件
- 仅读取需要统计的列(
'b')以提升效率 - 统计每列的唯一值数量
- 收集结果并转换为指定格式的Pandas DataFrame
完整代码
import pandas as pd from glob import glob # 匹配目标路径下的所有CSV文件,可根据实际路径调整(比如'./data/*.csv') csv_files = glob('file_*.csv') # 初始化列表存储每个文件的统计结果 results = [] for file_path in csv_files: # 仅读取列'b',避免加载无关数据节省内存 df = pd.read_csv(file_path, usecols=['b']) # 统计列'b'的唯一值数量 unique_count = df['b'].nunique() results.append({'filename': file_path, 'count': unique_count}) # 转换为目标格式的DataFrame,并按文件名排序(可选) summary_df = pd.DataFrame(results).sort_values('filename').reset_index(drop=True) # 输出结果 print(summary_df)
关键说明
- 批量文件匹配:使用
glob模块可以快速匹配符合命名规则的CSV文件,无需手动逐个指定文件名 - 高效读取:通过
usecols=['b']仅加载需要的列,在处理大文件时能大幅减少内存占用和读取时间 - 快速统计:
nunique()是Pandas专门用于统计唯一值数量的高效方法,比len(df['b'].unique())性能更优 - 结果整理:最后通过
sort_values按文件名排序,保证结果顺序清晰(可根据需求省略)
输出示例
运行代码后会得到如下格式的DataFrame:
filename count 0 file_00.csv 998 1 file_01.csv 997 2 file_02.csv 996 ...
内容的提问来源于stack exchange,提问作者Arik Hazan
相关产品推荐
相关产品推荐

