首页 > 其他分享 >数据分析-Pandas分类数据的类别处理

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

时间:2024-03-24 12:00:14浏览次数:17  
标签:数据分析 Group cat GPT 类别 Pandas categories Out

数据分析-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博客

标签:数据分析,Group,cat,GPT,类别,Pandas,categories,Out
From: https://blog.csdn.net/Alex_StarSky/article/details/136976770

相关文章

  • 【数据分析实战】物流行业数据分析
    数据来源:某企业销售的6种商品对应的送货及用户反馈数据解决问题:配送服务质量是否存在问题是否存在尚有潜力的销售区域商品是否存在质量问题分析过程:数据清洗①重复值、缺失值、格式调整②异常值处理(比如:消费金额存在等于0的情况,属于异常等)数据规整比如:增加一列辅......
  • 【数据分析实战】餐厅订单数据分析
    今天我们来分析以下某餐厅8月份订单数据,该餐厅的订单数据前10天、中间10天、后10天分别放在不同的Sheet里。订单数据字段包括:detail_id、order_id、dishes_id、logicprn_name、parent_class_name、dishes_name、itemis_add、counts、amounts、cost、piece_order_time、emp_......
  • 036—pandas 按行将列名根据值由大到小排序
    前言数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。需求:需要增加一列「分布方式」,每行的值是本行基金名称对应列名及数量,顺序按照值大小,值为0的不显示思路:先用apply(......
  • 数据分析基础
    数据分析基础1.数据加载使用Pandas库可以轻松地加载各种格式的数据,如CSV、Excel、JSON等。importpandasaspd#从CSV文件加载数据data=pd.read_csv(‘data.csv’).2.数据探索一旦数据加载完成,我们可以开始对数据进行探索性分析,了解数据的结构、特征和分布......
  • 聚酰亚胺PI材料难于粘接,用什么胶水粘接?那么让我们先一步步的从认识它开始(六): 聚酰亚胺
    聚酰亚胺PI薄膜的类别聚酰亚胺(Polyimide,PI)薄膜是一种高性能聚合物薄膜,根据不同的性能和制备方式,可以分为不同的类别。均苯型聚酰亚胺薄膜:这是一种重要的聚酰亚胺薄膜类型,由美国杜邦公司生产,商品名为Kapton。它主要由均苯四甲酸二酐与二苯醚二胺制得。联苯型聚酰亚胺薄......
  • 每天一个数据分析题(二百二十五)
    ENN(EditedNearestNeighbors)方法是一种有效的处理类别不平衡问题时的方法,以下关于ENN算法的哪个描述是正确的?A.ENN主要移除多数类的样本B.ENN通过查找样本的最近邻居来判断是否移除它们C.ENN总是优先移除那些距离决策边界很远的样本D.ENN仅用于过采样题目来源于CD......
  • 每天一个数据分析题(二百二十六)
    当您使用网格搜索(GridSearch)进行超参数调优的时候,如果您有3个超参数,每个超参数有4个可能的值,进行5折交叉验证,那么您将训练多少次模型?A.60B.240C.320D.405题目来源于CDA模拟题库点击此处获取答案......
  • 动手学习数据分析 Task05
    动手学习数据分析Task05本文是Datawhale的组队学习动手学习数据分析的学习笔记,课件内容来源于Datawhale的团队;代码部分参考了b站up主橘子冰的一隅角落的系列视频模型搭建确定数据集是进行监督学习还是无监督学习由任务、数据样本量以及特征的稀疏性来决定模型先尝试使用一......
  • Python利用Numpy和Pandas实现数据清洗
    利用Numpy和Pandas对数据进行清洗,包括去除重复记录、处理缺失值和异常值,实现代码如下:点击此处下载数据集#coding=utf-8#导入必要的库importpandasaspdimportnumpyasnp#导入数据及输出格式defread_data(filename):data=pd.read_csv(filename)......
  • 十.pandas方法总结&Numpy
    目录十.pandas方法总结1.索引切片2.数据排序3.数据统计Pandas数据计算4.数据查看5.数据清洗6-数据分组查看分组结果7-处理第三方数据csv文件操作Excel文件操作Excel文件读取read_excelExcel文件写入to_excel()SQL操作mysql读取数据保存pandas处理字符串数......