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

相关推荐
Frank牛蛙5 小时前
银行信用卡风险大数据分析与挖掘2024
数据挖掘·数据分析
Kerry_65 小时前
2024年江苏省研究生数学建模科研创新实践大赛C题气象数据高精度融合技术研究论文和代码分析
算法·数学建模·matlab·数据分析
麦田里的稻草人w7 小时前
【数据分析“三剑客”】—— Pandas
数据挖掘·数据分析·pandas
只要名字够长就有猪跟着念7 小时前
数据分析如何在企业中发挥价值
java·数据库·数据分析
LavenLiu7 小时前
【数据分析】DuckDB 是什么及其适用场景?
数据库·oracle·数据分析
紫色沙9 小时前
每天一个数据分析题(四百十一)- 主成分
数据挖掘·数据分析
紫色沙9 小时前
每天一个数据分析题(四百零六)- 因子分析
数据挖掘·数据分析
码界领航10 小时前
(6) 深入理解pandas的核心数据结构:DataFrame全面解析
数据结构·python·numpy·pandas
晨同学032716 小时前
pandas,dataframe使用笔记
笔记·pandas
神奇夜光杯16 小时前
Python酷库之旅-第三方库Pandas(006)
开发语言·人工智能·python·pandas·基础知识·学习和成长·标准库及第三方库