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

导入关键模块

python 复制代码
import pandas as pd
import numpy as np

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

下面对 pandas 分类数据类型做个简单的介绍。

分类数据

Categoricals 是 pandas 的一种数据类型,对应统计分类变量。通常,统计分类变量是有限的、固定的、 可能数值。例如,性别, 社会阶层,血型,颜色,种类,评价,评级等等。

与统计分类变量相比,分类数据还可能有一个顺序(例如 "非常同意"与"同意","第一次观察"与"第二次观察"),但不能进行算术计算,比如,加减乘除。

所有的数据,要么在分类数据中,要么不在。分类数据如果有顺序,那么是按定义的值进行排序,而不是按照词法顺序,比如字母顺序,数字顺序。实际上在内部,其数据结构是由一个真正数值的数组和一个整数数组构成,整数数组指向真正值的数组。 哈哈,有点绕。

分类的作用

categorical 数据类型在以下情况下很有用:

  • 仅由几个不同值组成的字符串变量。字符串变量转换为分类变量可节省一些内存。
  • 变量的逻辑顺序和词法顺序不同,通过转换为分类并指定类别的顺序,这样可以使用逻辑顺序进行排序, min/max 操作。
  • 提示 Python 库,表明此列应被视为分类变量操作(例如,使用合适的统计方法或绘图类型)。

分类转换的控制

在前面分类数据的生成示例中,使用dtype='category'默认的配置:

  1. 类别是从数据中推断出来的;
  2. 类别是无序的;

如果要控制,改变类型的配置,可以使用 ``CategoricalDtype` 函数,主要参数是类别参数 categories,是否有序 ordered。

python 复制代码
In [26]: from pandas.api.types import CategoricalDtype

In [27]: s = pd.Series(["a", "b", "c", "a"])
In [28]: cat_type = CategoricalDtype(categories=["b", "c", "d"], ordered=True)
In [29]: s_cat = s.astype(cat_type)
In [30]: s_cat

Out[30]: 
0    NaN
1      b
2      c
3    NaN
dtype: category
Categories (3, object): ['b' < 'c' < 'd']

同样,当在DataFrame中使用时,原本所有列之间的类别可能不一致的问题,就可以用CategoricalDtype解决。

python 复制代码
In [31]: from pandas.api.types import CategoricalDtype

In [32]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")})
In [33]: cat_type = CategoricalDtype(categories=list("abcd"), ordered=True)
In [34]: df_cat = df.astype(cat_type)
In [35]: df_cat["A"]

Out[35]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories (4, object): ['a' < 'b' < 'c' < 'd']

In [36]: df_cat["B"]

Out[36]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories (4, object): ['a' < 'b' < 'c' < 'd']

如果已知分布,也可以使用from_codes()函数构造,比如以下是正态函数构造模式:

python 复制代码
In [37]: splitter = np.random.choice([0, 1], 5, p=[0.5, 0.5])

In [38]: s = pd.Series(pd.Categorical.from_codes(splitter, categories=["train", "test"]))

分类类型的复原

如果要返回到原始数组,或 NumPy 数组,请使用:Series.astype(original_dtype) 或者np.asarray(categorical)

python 复制代码
In [39]: s = pd.Series(["a", "b", "c", "a"])
In [41]: s2 = s.astype("category")
In [42]: s2

Out[42]: 
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): ['a', 'b', 'c']

In [43]: s2.astype(str)
Out[43]: 
0    a
1    b
2    c
3    a
dtype: object

In [44]: np.asarray(s2)
Out[44]: array(['a', 'b', 'c', 'a'], dtype=object)

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

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

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

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博客

相关推荐
Altair澳汰尔6 小时前
数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者
人工智能·算法·机器学习·数据分析·知识图谱
qingyunliushuiyu12 小时前
企业为何需要可视化数据分析系统
数据挖掘·数据分析·数据采集·数据可视化·数据分析系统
chenchihwen14 小时前
数据分析时的json to excel 转换的好用小工具
数据分析·json·excel
江南野栀子1 天前
数据可视化-1. 折线图
信息可视化·数据挖掘·数据分析
反方向的钟儿1 天前
非结构化数据分析与应用(Unstructured data analysis and applications)(pt3)图像数据分析1
人工智能·计算机视觉·数据分析
感谢地心引力1 天前
【数据分析】层次贝叶斯
机器学习·数据分析·概率论
殇淋狱陌1 天前
第四章 列表(List)&元组(Tuple)以及代码格式基础语法及操作
数据结构·python·数据分析·list·元组
壹屋安源1 天前
自动生成发票数据并存入Excel
python·excel·pandas·random·datetime·faker
drbool1 天前
AI驱动的数据分析:利用自然语言实现数据查询到可视化呈现
人工智能·信息可视化·数据分析
出发行进2 天前
Hive其五,使用技巧,数据查询,日志以及复杂类型的使用
大数据·hive·数据分析