我對熊貓相當陌生,來自一個統計背景,我正在努力解決一個概念問題: 熊貓有列,其中包含值。但是有時候,價值觀具有特殊的含義 - 在像SPSS或R這樣的統計程序中稱爲「標籤」。在熊貓中標記變量?
想象一下有兩個值0「無雨」和1「下雨」的列「雨」 - 有沒有辦法將這些標籤分配給列?
熊貓也有辦法做到這一點嗎?主要用於平臺和可視化目的。
我對熊貓相當陌生,來自一個統計背景,我正在努力解決一個概念問題: 熊貓有列,其中包含值。但是有時候,價值觀具有特殊的含義 - 在像SPSS或R這樣的統計程序中稱爲「標籤」。在熊貓中標記變量?
想象一下有兩個值0「無雨」和1「下雨」的列「雨」 - 有沒有辦法將這些標籤分配給列?
熊貓也有辦法做到這一點嗎?主要用於平臺和可視化目的。
訪問標記的數據有沒有需要使用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]
也可以重命名分類並添加缺失類別
感謝您的更新。我會接受它,因爲它對新讀者來說更爲正確 –
可以有你一個單獨的字典,其值映射到標籤:
d={0:"no rain",1:"raining"}
,然後你可以通過做
df.rain_column.apply(lambda x:d[x])
'map'可能更適合這種簡單情況 – EdChum
這種情況下的區別是什麼? – grasshopper
只有更簡單的語法:'df.rain_column.map(d)',或許更快的性能,它取決於數據大小和類型爲100行的數據幀,然後「應用」稍微快一點(適用228我們對比地圖287us),對於10000行的地圖,地圖的速度要快26倍(地圖是512 us vs應用13 ms) – EdChum
你想給的值存儲爲字符串或更高版本分配一些特殊的含義?即使用查找或添加一個將值映射到人類友好值的新列?或者你只是想在你的情節的傳說中提供這些信息? – EdChum
@EdChum理想情況下,我根本不需要新的列 - 例如在SPSS中,標籤經常用於在表格,圖表等中顯示數據,但是您可以使用數值作爲條件。在我的工作中,我經常有變量,每列有30多個不同的「標籤」 - 讓相關的字符串可見將有很大的幫助(例如,避免「21的含義是什麼?」 - 問題) –
您可以將它添加爲屬性這是一般的Python,而不是特定於熊貓和訪問它的情節看到相關:http://stackoverflow.com/questions/14688306/adding-meta-information-metadata-to-pandas-dataframe – EdChum