
本文介绍如何使用Pandas快速获取分类列(如“channel used”)中所有不重复的值,替代仅统计数量的nunique(),直接返回可读性强的唯一值数组。
本文介绍如何使用pandas快速获取分类列(如“channel used”)中所有不重复的值,替代仅统计数量的`nunique()`,直接返回可读性强的唯一值数组。
在数据分析中,了解分类列(categorical column)包含哪些具体取值,往往比单纯知道“有多少个唯一值”更有实际意义。例如,你已用 df.nunique() 得到 channel used 列有 4 个唯一值,但真正需要的是明确列出它们:youtube、facebook、instagram、email——而非仅一个数字。
此时应使用 pd.unique() 函数。它专为一维数组设计,能高效去重并保持首次出现顺序(非排序),返回一个 NumPy ndarray,结果直观且可直接用于后续分析或可视化:
import pandas as pd
# 假设已加载数据
# df = pd.read_csv('marketing_data.csv')
# 提取 'channel used' 列的唯一值列表
unique_channels = pd.unique(df["channel used"])
print(unique_channels)
# 输出: ['youtube' 'facebook' 'instagram' 'email']
# 若需转为 Python 列表便于遍历或导出
unique_list = unique_channels.tolist()
print(unique_list)
# 输出: ['youtube', 'facebook', 'instagram', 'email']⚠️ 注意事项:
-
pd.unique()作用于 Series 或一维数组,不支持直接传入 DataFrame;若误写pd.unique(df)会报错。 - 与
df["col"].unique()效果一致,但后者更常用(因支持链式调用);二者均保留原始数据中首次出现的顺序,不自动排序。如需升序排列,可追加.sort()或sorted():sorted_channels = sorted(df["channel used"].unique()) # 返回 list
- 对含缺失值(
NaN)的列,pd.unique()默认将NaN视为一个有效唯一值;若需排除空值,建议先清洗:df["channel used"].dropna().unique()
总结:当目标是“列出”而非“计数”时,pd.unique() 是最简洁、高效的工具。它轻量、稳定,且与 Pandas 生态无缝集成,是处理分类变量探索性分析的必备方法之一。

















