数据分析-Pandas分类数据的类别处理

数据分析-Pandas分类数据的类别处理

数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?

数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2数据作为样例。

数据分析

数据分析-Pandas如何转换产生新列

数据分析-Pandas如何统计数据概况

数据分析-Pandas如何轻松处理时间序列数据

数据分析-Pandas如何选择数据子集

数据分析-Pandas如何重塑数据表-CSDN博客

本文用到的样例数据:

Titanic数据

空气质量监测 N O 2 NO_2 NO2数据

样例代码:

源代码参考 Pandas如何重塑数据表

源代码参考 python数据分析-数据表读写到pandas

导入关键模块

import pandas as pd
import numpy as np

实验数据分析处理,股票序列,时间序列,信号序列,有时候表格的数据并不完全是数值类型,也有可能是字符串,或者其他数据,需要做分类处理。pandas如何控制数据分类处理呢?需要配置哪些参数?

类别必须是唯一的,否则会引发:ValueError

数据类别的统计描述

在分类数据上使用 DataFrame.describe() 将产生类别的统计输出,包括数量,类别数,数量最多的类别,最多频率。

In [53]: cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
In [54]: df = pd.DataFrame({"cat": cat, "s": ["a", "c", "c", np.nan]})

In [55]: df.describe()
Out[55]: 
       cat  s
count    3  3
unique   2  2
top      c  c
freq     2  2

In [56]: df["cat"].describe()
Out[56]: 
count     3
unique    2
top       c
freq      2
Name: cat, dtype: object

类别相等

什么事相同的类别?

相同类别有两个条件:一是类别名相同,二是顺序相同。

比具体比较两个实例,只有它们具有相同的类别和相同的顺序,才算相等。当都是无序类别时,可以认为顺序已经没有差异,就只需要比较类别名。

In [49]: c1 = CategoricalDtype(["a", "b", "c"], ordered=False)

# 相等,因为顺序不需要再考虑,当 ordered=False
In [50]: c1 == CategoricalDtype(["b", "c", "a"], ordered=False)
Out[50]: True

# 不相等,因为第二个的类别时有序的 ordered = True
In [51]: c1 == CategoricalDtype(["a", "b", "c"], ordered=True)
Out[51]: False

另外,有个特殊的情况,即所有类别实例都等于字符串 :CategoricalDtype``'category'

In [52]: c1 == "category"
Out[52]: True

类别的使用

分类数据有一个特性,列出分类值和排序。如果不手动指定类别和排序,是从传递的参数中推断出来的。s.cat.categories``s.cat.ordered

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

In [58]: s.cat.categories
Out[58]: Index(['a', 'b', 'c'], dtype='object')

In [59]: s.cat.ordered
Out[59]: False

也可以按特定顺序把类别传入,新的分类数据不会自动排序,除非你明确指定是有序的。:

In [60]: s = pd.Series(pd.Categorical(["a", "b", "c", "a"], categories=["c", "b", "a"]))

In [61]: s.cat.categories
Out[61]: Index(['c', 'b', 'a'], dtype='object')

In [62]: s.cat.ordered
Out[62]: False

类别重命名

类别重命名是通过以下方法rename_categories()完成的:

In [67]: s = pd.Series(["a", "b", "c", "a"], dtype="category")
In [69]: new_categories = ["Group %s" % g for g in s.cat.categories]
In [70]: s = s.cat.rename_categories(new_categories)

In [71]: s
Out[71]: 
0    Group a
1    Group b
2    Group c
3    Group a
dtype: category
Categories (3, object): ['Group a', 'Group b', 'Group c']

# 可以传入字典类型的参数
In [72]: s = s.cat.rename_categories({"Group a": "x", 2: "y", 3: "z"})

In [73]: s
Out[73]: 
0    x
1    Group b
2    Group c
3    x
dtype: category
Categories (3, object): ['x', 'Group b', 'Group c']

类别不得是:NaN,否则会引起错误ValueError

In [75]: try:
   ....:     s = s.cat.rename_categories([1, 2, np.nan])
   ....: except ValueError as e:
   ....:     print("ValueError:", str(e))
   ....: 
ValueError: Categorical categories cannot be null

增加新类别

可以使用方法add_categories()增加新的类别:

In [76]: s = s.cat.add_categories([4])
In [77]: s.cat.categories
Out[77]: Index(['Group a', 'Group b', 'Group c', 4], dtype='object')

In [78]: s
Out[78]: 
0    Group a
1    Group b
2    Group c
3    Group a
dtype: category
Categories (4, object): ['Group a', 'Group b', 'Group c', 4]

删除类别

可以使用方法remove_categories()删除类别。

In [79]: s = s.cat.remove_categories([4])

In [80]: s
Out[80]: 
0    Group a
1    Group b
2    Group c
3    Group a
dtype: category
Categories (3, object): ['Group a', 'Group b', 'Group c']

删除没用类别

删除未使用的类别也可以完成:

In [81]: s = pd.Series(pd.Categorical(["a", "b", "a"], categories=["a", "b", "c", "d"]))

In [82]: s
Out[82]: 
0    a
1    b
2    a
dtype: category
Categories (4, object): ['a', 'b', 'c', 'd']

In [83]: s.cat.remove_unused_categories()
Out[83]: 
0    a
1    b
2    a
dtype: category
Categories (2, object): ['a', 'b']

设置类别

如果想在一条语句既添加新类别,也想删除类别,最简单的就是设置类别:set_categories()

In [84]: s = pd.Series(["one", "two", "four", "-"], dtype="category")

In [85]: s
Out[85]: 
0     one
1     two
2    four
3       -
dtype: category
Categories (4, object): ['-', 'four', 'one', 'two']

In [86]: s = s.cat.set_categories(["one", "two", "three", "four"])

In [87]: s
Out[87]: 
0     one
1     two
2    four
3     NaN
dtype: category
Categories (4, object): ['one', 'two', 'three', 'four']

以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。

后面介绍下其他的展示形式。

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

End

GPT专栏文章:

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

大模型查询工具助手之股票免费查询接口

GPT实战系列-简单聊聊LangChain

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-ChatGLM2模型的微调训练参数解读

GPT实战系列-如何用自己数据微调ChatGLM2模型训练

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-Baichuan2本地化部署实战方案

GPT实战系列-Baichuan2等大模型的计算精度与量化

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-探究GPT等大模型的文本生成-CSDN博客

相关推荐

  1. 数据分析-Pandas分类数据类别处理

    2024-03-24 05:42:03       18 阅读
  2. 数据分析Pandas 数据处理

    2024-03-24 05:42:03       30 阅读
  3. 数据分析-Pandas数据分类处理

    2024-03-24 05:42:03       19 阅读
  4. 数据分析-Pandas类别数据序列合并

    2024-03-24 05:42:03       19 阅读
  5. 数据分析-Pandas如何处理表格中文本数据

    2024-03-24 05:42:03       39 阅读
  6. 数据分析-Pandas类别排序和顺序

    2024-03-24 05:42:03       18 阅读
  7. pythonpandas数据分析处理基础学习

    2024-03-24 05:42:03       39 阅读
  8. Python 中 Pandas(数据分析处理)

    2024-03-24 05:42:03       5 阅读
  9. 数据分析-Pandas数据分类转换控制

    2024-03-24 05:42:03       23 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 05:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 05:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 05:42:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 05:42:03       20 阅读

热门阅读

  1. jenkins 自动下载 环境依赖包,下载超时、报错

    2024-03-24 05:42:03       17 阅读
  2. 供应链攻击揭秘:识别、防范与应对

    2024-03-24 05:42:03       18 阅读
  3. 13 转钱和查询余额

    2024-03-24 05:42:03       15 阅读
  4. 普通用户权限运行Docker

    2024-03-24 05:42:03       16 阅读
  5. MongoDb数据库介绍安装使用

    2024-03-24 05:42:03       19 阅读
  6. 英语面试研究

    2024-03-24 05:42:03       19 阅读
  7. 数据仓库——维度表更新

    2024-03-24 05:42:03       19 阅读
  8. C#中const与readonly关键字区别

    2024-03-24 05:42:03       18 阅读
  9. 数据分析-Pandas类别的排序和顺序

    2024-03-24 05:42:03       18 阅读
  10. 最常考的设计模式之一---单例模式

    2024-03-24 05:42:03       17 阅读
  11. 设计模式之单例模式

    2024-03-24 05:42:03       17 阅读