数据分析-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如何进行数据的分类呢?

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

分类数据

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

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

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

分类的作用

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

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

分类对象创建

基于Series

分类或者列,可以通过多种方式创建。

最简单的方式,通过在构造时指定:dtype="category"

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

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

还可以通过把现有序列 astype 转换为 dtype:Series``category

In [3]: df = pd.DataFrame({"A": ["a", "b", "c", "a"]})
In [4]: df["B"] = df["A"].astype("category")
In [5]: df

Out[5]: 
   A  B
0  a  a
1  b  b
2  c  c
3  a  a

此外,通过使用特殊函数,例如 cut(),将分组数据到 离散的箱。

In [6]: df = pd.DataFrame({"value": np.random.randint(0, 100, 20)})
In [7]: labels = ["{0} - {1}".format(i, i + 9) for i in range(0, 100, 10)]
In [8]: df["group"] = pd.cut(df.value, range(0, 105, 10), right=False, labels=labels)
In [9]: df.head(10)

Out[9]: 
   value    group
0     65  60 - 69
1     49  40 - 49
2     56  50 - 59
3     43  40 - 49
4     43  40 - 49
5     91  90 - 99
6     32  30 - 39
7     87  80 - 89
8     36  30 - 39
9      8    0 - 9

通过传递一个pandas.Categorical 对象给序列或者 DataFrame 。

In [10]: raw_cat = pd.Categorical(
   ....:     ["a", "b", "c", "a"], categories=["b", "c", "d"], ordered=False
   ....: )
   ....: 
In [11]: s = pd.Series(raw_cat)
In [12]: s

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

In [13]: df = pd.DataFrame({"A": ["a", "b", "c", "a"]})
In [14]: df["B"] = raw_cat
In [15]: df

Out[15]: 
   A    B
0  a  NaN
1  b    b
2  c    c
3  a  NaN

分类数据具有特定的数据类型:category

In [16]: df.dtypes
Out[16]: 
A      object
B    category
dtype: object

基于DataFrame

与序列转换为分类数据类似,既可以在构造期间转换,也可以在构造完成之后把所有列批量转换。

在构造函数中,是通过指定类型参数来在构造过程中完成:dtype="category"

In [17]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")}, dtype="category")
In [18]: df.dtypes

Out[18]: 
A    category
B    category
dtype: object

需要注意的是,每列中存在的类别可能是不同的;因为转换是逐列完成的,所以只有给定列中存在的标签是有类别:

In [19]: df["A"]

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

In [20]: df["B"]

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

同样地,现有列中的所有列都可以使用以下命令 astype() 转换:

In [21]: df = pd.DataFrame({"A": list("abca"), "B": list("bccd")})
In [22]: df_cat = df.astype("category")
In [23]: df_cat.dtypes

Out[23]: 
A    category
B    category
dtype: object

同样的,这个转换也是逐列完成的:

In [24]: df_cat["A"]
Out[24]: 
0    a
1    b
2    c
3    a
Name: A, dtype: category
Categories (3, object): ['a', 'b', 'c']

In [25]: df_cat["B"]
Out[25]: 
0    b
1    c
2    c
3    d
Name: B, dtype: category
Categories (3, object): ['b', 'c', 'd']

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

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

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

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-21 08:36:04       30 阅读
  2. 数据分析-Pandas数据分类处理

    2024-03-21 08:36:04       20 阅读
  3. 数据分析-Pandas分类数据的类别处理

    2024-03-21 08:36:04       18 阅读
  4. 数据分析Pandas

    2024-03-21 08:36:04       40 阅读
  5. 数据分析Pandas

    2024-03-21 08:36:04       33 阅读
  6. 【Python】—— pandas 数据分析

    2024-03-21 08:36:04       31 阅读
  7. Pandas进行数据分析

    2024-03-21 08:36:04       16 阅读
  8. 数据分析 -- pandas

    2024-03-21 08:36:04       16 阅读

最近更新

  1. TCP协议是安全的吗?

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

    2024-03-21 08:36:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 08:36:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 08:36:04       20 阅读

热门阅读

  1. React.js快速入门教程

    2024-03-21 08:36:04       22 阅读
  2. bert源码分析之tokenization

    2024-03-21 08:36:04       20 阅读
  3. 【Qt之·类QProcess】

    2024-03-21 08:36:04       21 阅读
  4. pytest相关面试题

    2024-03-21 08:36:04       22 阅读
  5. 【WEEK4】学习目标及总结【SpringMVC】【中文版】

    2024-03-21 08:36:04       22 阅读
  6. 理论学习:深度学习里什么是置信度

    2024-03-21 08:36:04       18 阅读
  7. C# 判断变量类型 GetType 未解决

    2024-03-21 08:36:04       18 阅读
  8. 洛谷入门——P1307 [NOIP2011 普及组] 数字反转

    2024-03-21 08:36:04       19 阅读
  9. C:2019-42真题408 循环队列

    2024-03-21 08:36:04       17 阅读
  10. 机器视觉系列之【基础知识】-图像传感器

    2024-03-21 08:36:04       19 阅读
  11. 十四. git

    2024-03-21 08:36:04       17 阅读