成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Pandas數據類型之category的用法

瀏覽:174日期:2022-06-15 16:13:42
創建category使用Series創建

在創建Series的同時添加dtype='category'就可以創建好category了。category分為兩部分,一部分是order,一部分是字面量:

In [1]: s = pd.Series(['a', 'b', 'c', 'a'], dtype='category')In [2]: sOut[2]: 0 a1 b2 c3 adtype: categoryCategories (3, object): [’a’, ’b’, ’c’]

可以將DF中的Series轉換為category:

In [3]: df = pd.DataFrame({'A': ['a', 'b', 'c', 'a']})In [4]: df['B'] = df['A'].astype('category')In [5]: df['B']Out[32]: 0 a1 b2 c3 aName: B, dtype: categoryCategories (3, object): [a, b, c]

可以創建好一個pandas.Categorical ,將其作為參數傳遞給Series:

In [10]: raw_cat = pd.Categorical( ....: ['a', 'b', 'c', 'a'], categories=['b', 'c', 'd'], ordered=False ....: ) ....: In [11]: s = pd.Series(raw_cat)In [12]: sOut[12]: 0 NaN1 b2 c3 NaNdtype: categoryCategories (3, object): [’b’, ’c’, ’d’]使用DF創建

創建DataFrame的時候,也可以傳入 dtype='category':

In [17]: df = pd.DataFrame({'A': list('abca'), 'B': list('bccd')}, dtype='category')In [18]: df.dtypesOut[18]: A categoryB categorydtype: object

DF中的A和B都是一個category:

In [19]: df['A']Out[19]: 0 a1 b2 c3 aName: A, dtype: categoryCategories (3, object): [’a’, ’b’, ’c’]In [20]: df['B']Out[20]: 0 b1 c2 c3 dName: B, dtype: categoryCategories (3, object): [’b’, ’c’, ’d’]

或者使用df.astype('category')將DF中所有的Series轉換為category:

In [21]: df = pd.DataFrame({'A': list('abca'), 'B': list('bccd')})In [22]: df_cat = df.astype('category')In [23]: df_cat.dtypesOut[23]: A categoryB categorydtype: object創建控制

默認情況下傳入dtype=’category’ 創建出來的category使用的是默認值:

1.Categories是從數據中推斷出來的。

2.Categories是沒有大小順序的。

可以顯示創建CategoricalDtype來修改上面的兩個默認值:

In [26]: from pandas.api.types import CategoricalDtypeIn [27]: s = pd.Series(['a', 'b', 'c', 'a'])In [28]: cat_type = CategoricalDtype(categories=['b', 'c', 'd'], ordered=True)In [29]: s_cat = s.astype(cat_type)In [30]: s_catOut[30]: 0 NaN1 b2 c3 NaNdtype: categoryCategories (3, object): [’b’ < ’c’ < ’d’]

同樣的CategoricalDtype還可以用在DF中:

In [31]: from pandas.api.types import CategoricalDtypeIn [32]: df = pd.DataFrame({'A': list('abca'), 'B': list('bccd')})In [33]: cat_type = CategoricalDtype(categories=list('abcd'), ordered=True)In [34]: df_cat = df.astype(cat_type)In [35]: df_cat['A']Out[35]: 0 a1 b2 c3 aName: A, dtype: categoryCategories (4, object): [’a’ < ’b’ < ’c’ < ’d’]In [36]: df_cat['B']Out[36]: 0 b1 c2 c3 dName: B, dtype: categoryCategories (4, object): [’a’ < ’b’ < ’c’ < ’d’]轉換為原始類型

使用Series.astype(original_dtype) 或者 np.asarray(categorical)可以將Category轉換為原始類型:

In [39]: s = pd.Series(['a', 'b', 'c', 'a'])In [40]: sOut[40]: 0 a1 b2 c3 adtype: objectIn [41]: s2 = s.astype('category')In [42]: s2Out[42]: 0 a1 b2 c3 adtype: categoryCategories (3, object): [’a’, ’b’, ’c’]In [43]: s2.astype(str)Out[43]: 0 a1 b2 c3 adtype: objectIn [44]: np.asarray(s2)Out[44]: array([’a’, ’b’, ’c’, ’a’], dtype=object)categories的操作獲取category的屬性

Categorical數據有 categories 和 ordered 兩個屬性。可以通過s.cat.categories 和 s.cat.ordered來獲取:

In [57]: s = pd.Series(['a', 'b', 'c', 'a'], dtype='category')In [58]: s.cat.categoriesOut[58]: Index([’a’, ’b’, ’c’], dtype=’object’)In [59]: s.cat.orderedOut[59]: False

重排category的順序:

In [60]: s = pd.Series(pd.Categorical(['a', 'b', 'c', 'a'], categories=['c', 'b', 'a']))In [61]: s.cat.categoriesOut[61]: Index([’c’, ’b’, ’a’], dtype=’object’)In [62]: s.cat.orderedOut[62]: False重命名categories

通過給s.cat.categories賦值可以重命名categories:

In [67]: s = pd.Series(['a', 'b', 'c', 'a'], dtype='category')In [68]: sOut[68]: 0 a1 b2 c3 adtype: categoryCategories (3, object): [’a’, ’b’, ’c’]In [69]: s.cat.categories = ['Group %s' % g for g in s.cat.categories]In [70]: sOut[70]: 0 Group a1 Group b2 Group c3 Group adtype: categoryCategories (3, object): [’Group a’, ’Group b’, ’Group c’]

使用rename_categories可以達到同樣的效果:

In [71]: s = s.cat.rename_categories([1, 2, 3])In [72]: sOut[72]: 0 11 22 33 1dtype: categoryCategories (3, int64): [1, 2, 3]

或者使用字典對象:

# You can also pass a dict-like object to map the renamingIn [73]: s = s.cat.rename_categories({1: 'x', 2: 'y', 3: 'z'})In [74]: sOut[74]: 0 x1 y2 z3 xdtype: categoryCategories (3, object): [’x’, ’y’, ’z’]使用add_categories添加category

可以使用add_categories來添加category:

In [77]: s = s.cat.add_categories([4])In [78]: s.cat.categoriesOut[78]: Index([’x’, ’y’, ’z’, 4], dtype=’object’)In [79]: sOut[79]: 0 x1 y2 z3 xdtype: categoryCategories (4, object): [’x’, ’y’, ’z’, 4]使用remove_categories刪除category

In [80]: s = s.cat.remove_categories([4])In [81]: sOut[81]: 0 x1 y2 z3 xdtype: categoryCategories (3, object): [’x’, ’y’, ’z’]刪除未使用的cagtegory

In [82]: s = pd.Series(pd.Categorical(['a', 'b', 'a'], categories=['a', 'b', 'c', 'd']))In [83]: sOut[83]: 0 a1 b2 adtype: categoryCategories (4, object): [’a’, ’b’, ’c’, ’d’]In [84]: s.cat.remove_unused_categories()Out[84]: 0 a1 b2 adtype: categoryCategories (2, object): [’a’, ’b’]重置cagtegory

使用set_categories()可以同時進行添加和刪除category操作:

In [85]: s = pd.Series(['one', 'two', 'four', '-'], dtype='category')In [86]: sOut[86]: 0 one1 two2 four3 -dtype: categoryCategories (4, object): [’-’, ’four’, ’one’, ’two’]In [87]: s = s.cat.set_categories(['one', 'two', 'three', 'four'])In [88]: sOut[88]: 0 one1 two2 four3 NaNdtype: categoryCategories (4, object): [’one’, ’two’, ’three’, ’four’]category排序

如果category創建的時候帶有 ordered=True , 那么可以對其進行排序操作:

In [91]: s = pd.Series(['a', 'b', 'c', 'a']).astype(CategoricalDtype(ordered=True))In [92]: s.sort_values(inplace=True)In [93]: sOut[93]: 0 a3 a1 b2 cdtype: categoryCategories (3, object): [’a’ < ’b’ < ’c’]In [94]: s.min(), s.max()Out[94]: (’a’, ’c’)

可以使用 as_ordered() 或者 as_unordered() 來強制排序或者不排序:

In [95]: s.cat.as_ordered()Out[95]: 0 a3 a1 b2 cdtype: categoryCategories (3, object): [’a’ < ’b’ < ’c’]In [96]: s.cat.as_unordered()Out[96]: 0 a3 a1 b2 cdtype: categoryCategories (3, object): [’a’, ’b’, ’c’]重排序

使用Categorical.reorder_categories() 可以對現有的category進行重排序:

In [103]: s = pd.Series([1, 2, 3, 1], dtype='category')In [104]: s = s.cat.reorder_categories([2, 3, 1], ordered=True)In [105]: sOut[105]: 0 11 22 33 1dtype: categoryCategories (3, int64): [2 < 3 < 1]多列排序

sort_values 支持多列進行排序:

In [109]: dfs = pd.DataFrame( .....: { .....: 'A': pd.Categorical( .....: list('bbeebbaa'), .....: categories=['e', 'a', 'b'], .....: ordered=True, .....: ), .....: 'B': [1, 2, 1, 2, 2, 1, 2, 1], .....: } .....: ) .....: In [110]: dfs.sort_values(by=['A', 'B'])Out[110]: A B2 e 13 e 27 a 16 a 20 b 15 b 11 b 24 b 2比較操作

如果創建的時候設置了ordered==True ,那么category之間就可以進行比較操作。支持 ==, !=, >, >=, <, 和 <=這些操作符。

In [113]: cat = pd.Series([1, 2, 3]).astype(CategoricalDtype([3, 2, 1], ordered=True))In [114]: cat_base = pd.Series([2, 2, 2]).astype(CategoricalDtype([3, 2, 1], ordered=True))In [115]: cat_base2 = pd.Series([2, 2, 2]).astype(CategoricalDtype(ordered=True))In [119]: cat > cat_baseOut[119]: 0 True1 False2 Falsedtype: boolIn [120]: cat > 2Out[120]: 0 True1 False2 Falsedtype: bool其他操作

Cagetory本質上來說還是一個Series,所以Series的操作category基本上都可以使用,比如: Series.min(), Series.max() 和 Series.mode()。

value_counts:

In [131]: s = pd.Series(pd.Categorical(['a', 'b', 'c', 'c'], categories=['c', 'a', 'b', 'd']))In [132]: s.value_counts()Out[132]: c 2a 1b 1d 0dtype: int64

DataFrame.sum():

In [133]: columns = pd.Categorical( .....: ['One', 'One', 'Two'], categories=['One', 'Two', 'Three'], ordered=True .....: ) .....: In [134]: df = pd.DataFrame( .....: data=[[1, 2, 3], [4, 5, 6]], .....: columns=pd.MultiIndex.from_arrays([['A', 'B', 'B'], columns]), .....: ) .....: In [135]: df.sum(axis=1, level=1)Out[135]: One Two Three0 3 3 01 9 6 0

Groupby:

In [136]: cats = pd.Categorical( .....: ['a', 'b', 'b', 'b', 'c', 'c', 'c'], categories=['a', 'b', 'c', 'd'] .....: ) .....: In [137]: df = pd.DataFrame({'cats': cats, 'values': [1, 2, 2, 2, 3, 4, 5]})In [138]: df.groupby('cats').mean()Out[138]: valuescatsa1.0b2.0c4.0dNaNIn [139]: cats2 = pd.Categorical(['a', 'a', 'b', 'b'], categories=['a', 'b', 'c'])In [140]: df2 = pd.DataFrame( .....: { .....: 'cats': cats2, .....: 'B': ['c', 'd', 'c', 'd'], .....: 'values': [1, 2, 3, 4], .....: } .....: ) .....: In [141]: df2.groupby(['cats', 'B']).mean()Out[141]: valuescats Ba c 1.0 d 2.0b c 3.0 d 4.0c c NaN d NaN

Pivot tables:

In [142]: raw_cat = pd.Categorical(['a', 'a', 'b', 'b'], categories=['a', 'b', 'c'])In [143]: df = pd.DataFrame({'A': raw_cat, 'B': ['c', 'd', 'c', 'd'], 'values': [1, 2, 3, 4]})In [144]: pd.pivot_table(df, values='values', index=['A', 'B'])Out[144]: valuesA Ba c 1 d 2b c 3 d 4

到此這篇關于Pandas數據類型之category的用法的文章就介紹到這了,更多相關category的用法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Pandas category
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
中文字幕在线观看不卡视频| 欧美激情视频一区二区三区在线播放| 日本一区二区高清| 综合婷婷亚洲小说| 日韩高清中文字幕一区| 国产乱一区二区| 91在线一区二区三区| 亚洲国产专区| 国产精品久久久一区二区三区| 亚洲一区在线免费| 欧美日韩在线播| 亚洲精品在线网站| 亚洲精品网站在线观看| 精品综合免费视频观看| 99精品视频在线观看免费| 亚洲久久视频| 欧美性色aⅴ视频一区日韩精品| 日韩一区二区免费电影| 国产精品久久久久久久久久免费看| 亚洲成年人网站在线观看| 国产一二三精品| 欧美日韩国产不卡在线看| 久久九九国产| 精品久久一区二区| 亚洲国产sm捆绑调教视频 | 亚洲一区在线观看网站| 美腿丝袜在线亚洲一区| 国产成人激情av| 99re热精品| 欧美一区二区三区系列电影| 亚洲视频在线观看一区| 九九久久精品视频| 亚洲夫妻自拍| 欧美日韩国产首页| 椎名由奈av一区二区三区| 久久av资源网| 欧美涩涩视频| 欧美最猛性xxxxx直播| 久久精品免费观看| 伊伊综合在线| 欧美一区二区在线视频| 亚洲黄色小说网站| 老司机一区二区三区| 欧美精品一区二区三区在线| 午夜亚洲国产au精品一区二区| 99精品视频中文字幕| 色94色欧美sute亚洲线路一久 | 欧美不卡在线| 欧美日韩一区二区欧美激情| 亚洲国产高清在线观看视频| 久久99精品久久只有精品| 亚洲欧洲日本mm| 欧美不卡在线视频| 奇米一区二区三区av| 在线日韩av| 欧美精品一区二区三区在线播放 | 欧美激情在线观看视频免费| 久久看人人爽人人| 国产一区二区三区四| 亚洲一区尤物| 日韩美女久久久| 欧美精品一二三四| 亚洲国产精品一区二区www在线| 91香蕉视频污| 欧美一区二区视频在线观看2020 | 国产在线成人| 久久综合狠狠综合久久激情| 韩国欧美国产一区| 一本大道久久a久久精品综合| 亚洲欧美日韩成人高清在线一区| 丁香婷婷综合激情五月色| 在线精品视频免费播放| 一区二区三区在线观看动漫| 欧美三区美女| 国产视频视频一区| 丰满少妇在线播放bd日韩电影| 91福利国产成人精品照片| 亚洲一二三区视频在线观看| 国内揄拍国内精品久久| 久久人人爽人人爽| 成人精品视频一区二区三区 | 国产成人精品免费一区二区| 欧美日韩一级二级三级| 日韩影院在线观看| 国产欧美日韩综合一区在线播放| 国产午夜精品久久久久久免费视| 国产福利一区二区三区视频在线 | 午夜视频在线观看一区二区| 一本色道久久99精品综合| 国产精品久久久久久久久免费桃花| 成人天堂资源www在线| 欧美乱妇15p| 精品制服美女丁香| 欧美在线免费观看亚洲| 蜜臀av性久久久久蜜臀av麻豆| 一本色道**综合亚洲精品蜜桃冫| 亚洲福利国产精品| 国产精品一区亚洲| 亚洲成人动漫av| 久久精品国产第一区二区三区最新章节 | 国产精品青草久久| 一本大道av一区二区在线播放 | 中文无字幕一区二区三区 | 亚洲久久一区二区| 亚洲最大成人网4388xx| 国产久一道中文一区| 亚洲高清视频在线| 久久精品卡一| 日韩精品电影在线观看| 色哟哟亚洲精品| 日av在线不卡| 欧美日韩大陆在线| 国产成人精品www牛牛影视| 精品国产91亚洲一区二区三区婷婷 | 蜜臀av性久久久久蜜臀av麻豆| 欧洲精品一区二区| 国产一区二区三区在线观看精品| 欧美日韩国产高清一区二区| 国产高清精品久久久久| 国产视频一区在线播放| 亚洲日本久久| 日韩专区欧美专区| 欧美视频在线观看一区二区| 国产乱码精品一区二区三区忘忧草| 欧美妇女性影城| 成人av动漫在线| 久久综合av免费| 精品999网站| 色婷婷激情综合| 激情综合网址| 国产一二精品视频| 亚洲午夜久久久久久久久久久| 久久只精品国产| 欧美少妇一区二区| 中文一区二区| 91亚洲国产成人精品一区二三 | 欧美在线亚洲综合一区| 麻豆一区二区三| 亚洲欧美偷拍卡通变态| 欧美草草影院在线视频| 欧美亚洲综合一区| 在线日韩中文| 99久久精品国产麻豆演员表| 精品夜夜嗨av一区二区三区| 亚洲一区在线观看免费观看电影高清| 99re热这里只有精品免费视频 | 老司机一区二区| 日韩写真欧美这视频| 欧美网站在线| 午夜视频在线观看一区| 亚洲国产清纯| 日本不卡视频一二三区| 日韩精品一区二区三区swag| 91丝袜美女网| 亚洲午夜在线电影| 久久久久久久久久码影片| 美腿丝袜亚洲综合| 欧美电影免费提供在线观看| 欧美日韩一区综合| 欧美岛国在线观看| 亚洲大片在线| 日本人妖一区二区| 欧美精品丝袜中出| 91丨九色丨蝌蚪富婆spa| 亚洲精品乱码久久久久久日本蜜臀| 91麻豆国产自产在线观看| 亚洲最大成人网4388xx| 欧美美女一区二区三区| 91色|porny| 亚洲韩国精品一区| 在线视频欧美精品| 国产福利91精品| 亚洲日本乱码在线观看| 在线观看网站黄不卡| 99免费精品在线观看| 一区二区三区色| 欧美美女网站色| 国自产拍偷拍福利精品免费一 | 91丨porny丨首页| 亚洲成人在线网站| 久久久不卡影院| 国产一区二区久久久| 久久99国内精品| 欧美韩国日本一区| 欧美最猛黑人xxxxx猛交| 欧美成人综合| 免费看黄色91| 国产人成一区二区三区影院| 欧美亚洲免费| 盗摄精品av一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 欧美在线|欧美| 一区二区视频在线观看| 极品瑜伽女神91| 亚洲欧洲日韩在线| 日韩视频中午一区| 亚洲欧洲午夜| 成人av集中营| 九色综合国产一区二区三区| 亚洲欧洲美洲综合色网|