
本文介绍如何使用 Pandas 快速获取分类列(如“channel used”)中所有不重复的值,替代仅统计数量的 nunique(),直接返回可读性强的唯一值数组。
本文介绍如何使用 pandas 快速获取分类列(如“channel used”)中所有不重复的值,替代仅统计数量的 `nunique()`,直接返回可读性强的唯一值数组。
在数据分析过程中,我们常需了解某分类列(categorical column)中具体包含哪些类别——例如营销渠道(channel used)列中的 youtube、facebook 等实际取值。虽然 df.nunique() 能快速返回唯一值个数(如 4),但它不提供具体值列表;此时应使用更精准的 pd.unique() 方法。
pd.unique() 是专为一维数组设计的高效去重函数,它保留首次出现顺序、不排序、不忽略 NaN(若存在),且性能优于 df["col"].drop_duplicates().values 或 df["col"].unique()(后者是 Series 方法,功能类似但底层略有差异)。推荐优先使用 pd.unique(series) 形式:
import pandas as pd
# 示例数据构建(对应表格)
data = {
"channel used": ["youtube", "facebook", "instagram", "youtube", "email"],
"Column B": ["men 25-30", "men 30-35", "women 35-40", "men 40-45", "women 26_30"]
}
df = pd.DataFrame(data)
# 提取唯一值列表
unique_channels = pd.unique(df["channel used"])
print(unique_channels)
# 输出: ['youtube' 'facebook' 'instagram' 'email']
⚠️ 注意事项:
-
pd.unique()返回的是 NumPy ndarray,非列表或 Series。如需转为 Python 列表,可追加.tolist();如需按字母序排列,可用sorted(pd.unique(df["channel used"])); - 若列中含缺失值(
NaN),pd.unique()默认会将其作为单独元素包含在结果中。如需排除,建议先清洗:pd.unique(df["channel used"].dropna()); - 对于大型数据集,
pd.unique()比df["col"].drop_duplicates().values更快,因其底层基于哈希表实现,时间复杂度接近 O(n)。
总结:当目标是「列出」而非「计数」唯一值时,请果断弃用 nunique(),改用 pd.unique(df["column_name"])——简洁、高效、语义明确,是 Pandas 分类数据探索的标准实践。










