pandas中Category的应用
文章目錄
- 對 Categorical 數(shù)據(jù)的一個直觀認(rèn)識
- 隱式創(chuàng)建 Categorical 數(shù)據(jù)
- 顯式創(chuàng)建 Categorical 數(shù)據(jù)
Categoricals 是 pandas 的一種 數(shù)據(jù)類型,對應(yīng)著被統(tǒng)計的變量。Categoricals 是由固定的且有限數(shù)量的變量組成的。比如:性別、社會階層、血型、國籍、觀察時段、贊美程度等等。
與其它被統(tǒng)計的變量相比,categorical 類型的數(shù)據(jù)可以具有特定的順序——比如:按程度來設(shè)定,“強(qiáng)烈同意”與“同意”,“首次觀察”與“二次觀察”,但是不能做按數(shù)值來進(jìn)行排序操作(比如:sort_by 之類的,換句話說,categorical 的順序是創(chuàng)建時手工設(shè)定的,是靜態(tài)的)。
類型數(shù)據(jù)的每一個元素的值要么是預(yù)設(shè)好的類型中的某一個,要么是空值(np.nan)。順序是由預(yù)設(shè)好的類型集合來決定的,而不是按照類型集合中各個元素的字母順序排序的。categorical 實(shí)例的內(nèi)部是由類型名字集合和一個整數(shù)組成的數(shù)組構(gòu)成的,后者標(biāo)明了類型集合真正的值。
對 Categorical 數(shù)據(jù)的一個直觀認(rèn)識
隱式創(chuàng)建 Categorical 數(shù)據(jù)
# 用一段代碼從不同角度來展現(xiàn)一下 categorical 類型的數(shù)據(jù) # 先創(chuàng)建一個簡單的 DataFrame 實(shí)例 # Terry, Hardon, Curry, Duran, James 和 Barter 代表東西部玩三打三 # 用一組數(shù)據(jù)記錄各自的得分情況 import pandas as pd import numpy as npplayers = ['Garsol','Hardon','Bill','Duran','James','Barter'] teams = ['West','West','East','West','East','East'] scores = [22,34,12,31,26,19] df = pd.DataFrame({'player':players,'score':scores,'team':teams}) df| Garsol | 22 | West |
| Hardon | 34 | West |
| Bill | 12 | East |
| Duran | 31 | West |
| James | 26 | East |
| Barter | 19 | East |
可以看出 team 這一列,其實(shí)只有兩種值:East 和 West,可以將 team 列的類型設(shè)定為 category.
df.team 0 West 1 West 2 East 3 West 4 East 5 East Name: team, dtype: object df.team.astype('category') 0 West 1 West 2 East 3 West 4 East 5 East Name: team, dtype: category Categories (2, object): [East, West]可以看到,df.team 的變量類型變成了 category。
當(dāng)然,迄今為止,這個分類是我們手工標(biāo)記上去的,主動給每一個球員加上了 east 或者 west 的標(biāo)記。那么,如果是動態(tài)的來添加呢?比如按照得分來劃分,將高于平均分的劃為 Star,低于平均分的劃為 Role。
計算過程就應(yīng)該是這樣:
顯式創(chuàng)建 Categorical 數(shù)據(jù)
cg = pd.Categorical(['Role','Role','Star','Role','Killer','Star'],categories=['Role', 'Star']) cg [Role, Role, Star, Role, NaN, Star] Categories (2, object): [Role, Star]可以看到,構(gòu)造方法中第二個參數(shù)是指定了實(shí)例中可以包含的元素,在第一個參數(shù)中的元素如果不在 categories 中,就會被轉(zhuǎn)成NaN。
Categorical 實(shí)例可以轉(zhuǎn)為 Series,被稱為 categorical series
也可以將 categorical 實(shí)例加入到 dataframe 實(shí)例的某一列中,被稱為 categorical dataframe column:
df = pd.DataFrame({'players':['Garsol','Hardon','Bill','Duran','James','Barter']}) df['level'] = cg print(df['level'],'\n\n',df.dtypes) 0 Role 1 Role 2 Star 3 Role 4 NaN 5 Star Name: level, dtype: category Categories (2, object): [Role, Star] players object level category dtype: object作者:那未必
鏈接:https://www.jianshu.com/p/20169d7f60bc
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
總結(jié)
以上是生活随笔為你收集整理的pandas中Category的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 制作纯净的U盘启动盘(避免纯净系统安装后
- 下一篇: 如何使用PC3000检测硬盘