清洗与访问数据

在 Python 中处理分类数据

Kasey Jones

Research Data Scientist

分类数据的常见问题

1) 不一致值:"Ham""ham"" Ham"

2) 拼写错误:"Ham""Hma"

3) 错误的 dtypedf['Our Column'].dtype

dtype('O')
在 Python 中处理分类数据

识别问题

可用以下任一方式:

  • Series.cat.categories
  • Series.value_counts()
dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
 NO       1
在 Python 中处理分类数据

修复问题:空格

去除空格:.strip()

dogs["get_along_cats"] = dogs["get_along_cats"].str.strip()

检查频数:

dogs["get_along_cats"].value_counts()
No     2503
yes     275
no      156
Noo       2
NO        1   # < ---- 不再有空格
在 Python 中处理分类数据

修复问题:大小写

大小写:.title().upper().lower()

dogs["get_along_cats"] = dogs["get_along_cats"].str.title()

检查频数:

dogs["get_along_cats"].value_counts()
No     2660 
Yes     275
Noo       2
在 Python 中处理分类数据

修复问题:拼写错误

.replace() 修正拼写

replace_map = {"Noo": "No"}
dogs["get_along_cats"].replace(replace_map, inplace=True)

检查频数:

dogs["get_along_cats"].value_counts()
No     2662
Yes     275
在 Python 中处理分类数据

检查数据类型

检查 dtype

dogs["get_along_cats"].dtype
dtype('O')

转换回分类

dogs["get_along_cats"] = dogs["get_along_cats"].astype("category")
在 Python 中处理分类数据

使用 str 访问器

搜索字符串

dogs["breed"].str.contains("Shepherd", regex=False)
0        False
1        False
2        False
...
2935     False
2936     True
在 Python 中处理分类数据

用 loc 访问数据

按类别访问 Series 值

dogs.loc[dogs["get_along_cats"] == "Yes", "size"]

Series 计数:

dogs.loc[dogs["get_along_cats"] == "Yes", "size"].value_counts(sort=False)
small      69
medium    169
large      37
在 Python 中处理分类数据

清洗与访问练习

在 Python 中处理分类数据

Preparing Video For Download...