Pandas数据分析19——pandas分类数据

 参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》


pandas中有专门的分类数据类型,虽然平时用的不多,但是也需要了解一下。读取spss文件时会自动生成分类数据类型。本次博客了解一下分类数据的生成和基础操作。


还是先导入包

import numpy as np
import pandas as pd

分类数据生成 

#使用 dtype="category" 来指定数据类型:

s = pd.Series(["a", "b", "c", "a"], dtype="category")
s

 #.astype('category') 可以转换为分类数据:

df = pd.DataFrame({"A": ["a", "b", "c", "a"]})
df["B"] = df["A"].astype('category')

#分箱数据自动变为分类数据

pd.Series(pd.cut(range(1,10,2),[0,5,10]))

 #pandas.Categorical 可以创建一个类型数据序列到 DataFrame 中:

raw_cat = pd.Categorical(["a", "b", "c", "d"],
                         categories=["b", "c", "d"],
                         ordered=False)
s = pd.Series(raw_cat)
s


类型转化

先读取案例数据

data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data) 
df.head()

将team一列转化为分类数据‘

df.team.astype('category')

’ 


修改分类 

s = pd.Series(["a", "b", "c", "a"], dtype="category")
s.cat.categories=['0','1','2']
s

将abc类别改为了012

 rename_categories也可以修改

s.cat.rename_categories(['A','B','C'])

 

s.cat.rename_categories({'a':0,'b':1,'c':2}) #字典修改

s.cat.set_categories(['A','B','C'])  #设定分类修改


追加新的分类

s = s.cat.add_categories([4])
s.cat.categories


 删除分类

s = s.cat.remove_categories([4])
s

 #删除未使用的类别:

s = pd.Series(pd.Categorical(["a", "b", "a"],categories=["a", "b", "c", "d"]))
s.cat.remove_unused_categories()  #c为使用,删除

数据里面没c,删掉


顺序

s = pd.Series(pd.Categorical(["a", "b", "c", "a"], ordered=False))
s.sort_values(inplace=True) # 排序
s

 #可以使用 as_ordered() 将类别数据设置为排序,或者使用 as_unordered() 将类别数据设置为无序。 这些默认情况下将返回一个新对象。

s.cat.as_ordered()

s.cat.as_unordered()

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/126242712