
本文介绍如何使用 Pandas 快速获取分类列(如“channel used”)中全部不重复的值,替代仅统计数量的 nunique(),直接返回去重后的值列表,适用于数据探索与预处理。
本文介绍如何使用 pandas 快速获取分类列(如“channel used”)中全部不重复的值,替代仅统计数量的 `nunique()`,直接返回去重后的值列表,适用于数据探索与预处理。
在数据分析中,了解分类变量(categorical column)的具体取值范围至关重要——例如确认渠道字段是否包含预期的 'youtube'、'facebook' 等值,或排查异常拼写(如 'emial')。虽然 df.nunique() 能快速返回唯一值个数(标量),但它无法展示具体是哪些值;此时应使用专为提取实际值设计的方法。
最直接、高效的方式是调用 pandas.unique() 函数:
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']该方法作用于一维 Series 或 NumPy 数组,返回一个 NumPy ndarray,元素无重复且按原始数据中首次出现顺序排列(非字典序),适合后续直接用于筛选、映射或可视化。
⚠️ 注意事项:
- ✅ 推荐优先使用
pd.unique()而非df["col"].unique():前者底层更轻量,尤其在大数据集上性能更优; - ❌ 避免误用
df["col"].value_counts().index:虽可得唯一值,但会额外执行计数排序,效率低且引入不必要的开销; - ? 若需排序输出(如字母序),可链式调用:
sorted(pd.unique(df["channel used"])); - ? 对含缺失值(
NaN)的列,pd.unique()默认保留一个NaN(Pandas 中NaN != NaN,但unique()将其视为单一缺失标识),如需排除,可加过滤:[x for x in pd.unique(df["channel used"]) if pd.notna(x)]。
综上,pd.unique() 是获取分类列真实取值集合的标准、简洁且高性能方案,应作为数据初探阶段的必备操作之一。

















