Pandas之十数据分类

关注微信公众号:数据研发技术,点击菜单:PY宝典,查看往期精彩内容

Pandas中为数据分类的需求提供专门的类型 category,可以由多种方式创建,并结合dataframe或Series进行使用。

首先生成样本数据:

df = pd.DataFrame(
    {"id": [1, 2, 3, 4, 5, 6]})
df

Pandas之十数据分类

1. 创建

category可以从不同方式创建,本文以给样本添加分类列,列名为 grade逐一进行说明。

1.1 Series创建

创建一个类型为 category的Series,再将其作为样本数据的 grade

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

df["grade"]=g

Pandas之十数据分类

1.2DataFrame创建

创建一个dataframe,其中 grade类型为 category,然后将两个dataframe进行拼接

df1 = pd.DataFrame(
    {"grade":["a", "b", "c", "a","e",np.nan]},
    dtype="category")
df = pd.concat([df,df1],axis=1)
df

Pandas之十数据分类

1.3 Categorical创建

使用 pd.Categorical创建分类,再作为 Series放到Dataframe里面。

g = pd.Categorical(
    ["a", "b", "c", "a","e",np.nan],
    categories=["a", "b", "c","e"],
    ordered=False)
df["grade"]=pd.Series(g)

Pandas之十数据分类

1.4 CategoricalDtype创建

CategoricalDtype是pandas的数据类型对象,指定 dtype='category'时,就等同于 dtype = CategoricalDtype()。包含以下参数:

  • categories:所有不重复分类值
  • ordered:设定分类排序,默认值为 False

创建 CategoricalDtype类型 c,并将 df.grade转为该类型

from pandas.api.types import CategoricalDtype
c = CategoricalDtype(["a", "b", "c","e"])
df["grade"]=pd.Series(["a", "b", "c", "a","e",np.nan])
df.grade = df.grade.astype(c)

Pandas之十数据分类

2. 使用

2.1 分类的描述性统计

describe可以统计分类数据做描述性统计,返回以下值:

  • count:统计数量
  • unique:统计分类值个数
  • top:出现最多次的值。此处是a。
  • freq:出现最多次值出现的次数。此处是a出现了2次。

Pandas之十数据分类

; 2.2 分类CRUD

可以对分类数据进行相应的CRUD操作,逐一进行说明。

2.2.1 增加分类

使用 add_categories增加新的分类

df.grade.cat.add_categories(["d"])

Pandas之十数据分类

2.2.2 设置分类

使用 set_categories重新设置分类

df.grade = df.grade.cat.set_categories(["a","b","c","d"])
df.grade

Pandas之十数据分类

2.2.3 删除分类

使用 remove_categories删除分类, 删除的值将替换为 np.nan

df.grade = df.grade.cat.remove_categories(["b"])
df.grade

Pandas之十数据分类

点个关注再走呗👉👉👉

Pandas之十数据分类

Original: https://blog.csdn.net/idiotion/article/details/120731461
Author: 阿坚87
Title: Pandas之十数据分类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/677553/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球