Python 熊猫的价值标签?

Python 熊猫的价值标签?,python,pandas,Python,Pandas,我对熊猫相当陌生,来自统计学背景,我正在与一个概念问题作斗争: Pandas具有包含值的列。但有时值有一个特殊的含义——在SPSS或R等统计程序中称为“值标签” 想象一个列rain,有两个值0(意思是:没有雨)和1(意思是:下雨)。有没有办法将这些标签指定给该值 在熊猫身上也有这样做的方法吗?主要用于拼版和可视化目的。您可以有一个单独的字典,将值映射到标签: d={0:"no rain",1:"raining"} 然后您可以通过执行以下操作来访问带标签的数据 df.rain_column.

我对熊猫相当陌生,来自统计学背景,我正在与一个概念问题作斗争: Pandas具有包含值的列。但有时值有一个特殊的含义——在SPSS或R等统计程序中称为“值标签”

想象一个列
rain
,有两个值
0
(意思是:没有雨)和
1
(意思是:下雨)。有没有办法将这些标签指定给该值


在熊猫身上也有这样做的方法吗?主要用于拼版和可视化目的。

您可以有一个单独的字典,将值映射到标签:

 d={0:"no rain",1:"raining"}
然后您可以通过执行以下操作来访问带标签的数据

 df.rain_column.apply(lambda x:d[x])

不再需要使用
地图
。自版本0.15以来,Pandas允许其列使用分类数据类型。 存储的数据占用更少的空间,对它的操作更快,并且您可以使用标签

我举了一个例子:


您还可以重命名类别并添加缺少的类别

是否要将值存储为字符串或稍后指定一些特殊含义?i、 e.使用查找或添加一个新列,将这些值映射到人类友好的值?或者您只是想在绘图图例中显示此信息?@EdChum理想情况下,我不需要任何新列-例如,在SPSS中,标签经常用于在表格、绘图等中显示数据。但您可以使用数值作为条件。在我的工作中,我经常有每个列有30多个不同“标签”的变量-让相关字符串可见将是巨大的帮助(例如,避免“21的含义是什么?”-问题)您可以将其添加为Python的通用属性,而不是Pandas的专用属性,并在绘图时访问它。请参见相关内容:这可能不会被任何普通的Porcude使用,但感谢您的建议
map
对于这种简单的情况可能更好。这种情况的区别是什么?只是在更简单的语法方面更好:
df.rain\u column.map(d)
,而且可能更快的性能,这取决于100行数据帧的数据大小和类型,然后
apply
稍微快一些(apply 228 us vs map 287us),对于一个有10000行的,那么map是26倍快(map是512 us vs apply 13 ms)好的,这是很有意义的,因为apply比map更通用。如果你同意的话,我会接受cd98的答案,它更适合新版本的熊猫。谢谢你的更新。我会接受它,因为它更适合新读者
df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":['a', 'b', 'b', 'a', 'a', 'e']})
#Recast grade as a categorical variable
df["grade"] = df["raw_grade"].astype("category")

df["grade"]

#Gives this:
Out[124]: 
0    a
1    b
2    b
3    a
4    a
5    e
Name: grade, dtype: category
Categories (3, object): [a, b, e]