2014-03-19 31 views
2

我對熊貓相當陌生,來自一個統計背景,我正在努力解決一個概念問題: 熊貓有列,其中包含值。但是有時候,價值觀具有特殊的含義 - 在像SPSS或R這樣的統計程序中稱爲「標籤」。在熊貓中標記變量?

想象一下有兩個值0「無雨」和1「下雨」的列「雨」 - 有沒有辦法將這些標籤分配給列?

熊貓也有辦法做到這一點嗎?主要用於平臺和可視化目的。

+0

你想給的值存儲爲字符串或更高版本分配一些特殊的含義?即使用查找或添加一個將值映射到人類友好值的新列?或者你只是想在你的情節的傳說中提供這些信息? – EdChum

+0

@EdChum理想情況下,我根本不需要新的列 - 例如在SPSS中,標籤經常用於在表格,圖表等中顯示數據,但是您可以使用數值作爲條件。在我的工作中,我經常有變量,每列有30多個不同的「標籤」 - 讓相關的字符串可見將有很大的幫助(例如,避免「21的含義是什麼?」 - 問題) –

+0

您可以將它添加爲屬性這是一般的Python,而不是特定於熊貓和訪問它的情節看到相關:http://stackoverflow.com/questions/14688306/adding-meta-information-metadata-to-pandas-dataframe – EdChum

回答

2

訪問標記的數據有沒有需要使用map了。從版本0.15開始,Pandas允許其列的分類數據類型。 存儲的數據佔用的空間更少,對其的操作更快,您可以使用標籤。

我以一個例子來自pandas docs

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] 

也可以重命名分類並添加缺失類別

+0

感謝您的更新。我會接受它,因爲它對新讀者來說更爲正確 –

3

可以有你一個單獨的字典,其值映射到標籤:

d={0:"no rain",1:"raining"} 

,然後你可以通過做

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

'map'可能更適合這種簡單情況 – EdChum

+0

這種情況下的區別是什麼? – grasshopper

+3

只有更簡單的語法:'df.rain_column.map(d)',或許更快的性能,它取決於數據大小和類型爲100行的數據幀,然後「應用」稍微快一點(適用228我們對比地圖287us),對於10000行的地圖,地圖的速度要快26倍(地圖是512 us vs應用13 ms) – EdChum