如何用Python生成DataFrame各列数据类型与唯一值汇总表?
Pandas DataFrame列信息汇总函数实现
问题背景
现有如下Pandas DataFrame示例:
import pandas as pd # 创建示例DataFrame df = pd.DataFrame({ 'letter': ['a','b','c','a','b','c'], 'state': ['CA','FL','CA','FL','CA','FL'], 'scores': [11.6,12.8,13.9,14.2,15.8,16.2], 'age': [12,28,19,14,12,28]})
需要编写Python代码生成包含列名(columns_names)、数据类型(Dtype)、**唯一值(Unique_values)**的汇总表,且代码需封装为可适配70列左右大型DataFrame的函数。
实现方案
以下是适配需求的函数实现,兼顾效率与可读性:
import pandas as pd def generate_df_summary(df): summary_records = [] # 遍历DataFrame的每一列 for col in df.columns: # 获取列的数据类型 col_dtype = str(df[col].dtype) # 获取列的唯一值集合 unique_values = df[col].unique() # 优化唯一值显示:数量超过5个时截断并标注总数 if len(unique_values) > 5: unique_display = f"{list(unique_values[:5])}... (共{len(unique_values)}个)" else: unique_display = list(unique_values) # 收集当前列的汇总信息 summary_records.append({ '列名(columns_names)': col, '数据类型(Dtype)': col_dtype, '唯一值(Unique_values)': unique_display }) # 转换为汇总DataFrame返回 return pd.DataFrame(summary_records)
示例使用
将示例DataFrame传入函数,即可生成汇总表:
# 生成汇总表 summary_df = generate_df_summary(df) print(summary_df)
运行结果
列名(columns_names) 数据类型(Dtype) 唯一值(Unique_values) 0 letter object ['a', 'b', 'c'] 1 state object ['CA', 'FL'] 2 scores float64 [11.6, 12.8, 13.9, 14.2, 15.8]... (共6个) 3 age int64 [12, 28, 19, 14]
函数特性
- 高效适配大型DataFrame:基于Pandas内置的
unique()方法,内部已做性能优化,处理70列的数据集毫无压力 - 可读性优化:针对唯一值数量较多的列,自动截断显示并标注总数,避免输出内容过长
- 灵活扩展:返回结果为DataFrame格式,可直接导出为Excel、CSV等格式,也可进一步自定义处理
内容的提问来源于stack exchange,提问作者Minh Chau
相关产品推荐
相关产品推荐

