人工智能理论之pandas

文章目录


前言

`今天介绍三大库中的pandas部分,有关三大库的numpy和matplotlib部分可以参考之前发的两篇笔记,有关新手小白的思考和遇到的问题,大家初学的也可以一起交流一下经验。


`

一、Pandas

概述:Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来

  • Pandas 名字衍生自术语 "panel data"(面板数据)和 "Python data analysis"(Python 数据分析)
  • Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具
  • Pandas 是 Python 语言的一个扩展程序库,用于数据分析
  • Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具
  • Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)
  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据
  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。
    应用方向:Pandas 广泛应用在学术、金融、统计学 等各个数据分析领域
    Pandas 的出现使得 Python 做数据分析 的能力得到了大幅度提升,它主要实现了数据分析的五个重要环节:加载数据、整理数据、操作数据、构建数据模型、分析数据
    对于我们真正迈入人工智能的基础,那么对于算法研究和数据分析是需要娴熟掌握的,以下便开始我们对此的了解。

二、安装

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

进入Anaconda Prompt进入安装pandas数据库

先进行激活环境

下载完成,可以进入Pycharm进行检查环境是否按照完成。

三、内置数据结构

Pandas 在 ndarray 数组(NumPy 中的数组)的基础上构建出了两种不同的数据结构

分别是 Series(一维数据结构)

区别:numpy没有标签进行访问,通过索引进行访问,固定标签按顺序0、1、2、3、4、5、6...等

DataFrame(二维数据结构):不通过坐标点找数据,通过索引编号找数据。

  • Series 是带标签 的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等
    -DataFrame 是一种表格型数据结构,它既有行标签,又有列标签

4、Series

Pandas Series 类似表格中等一个列(column),类似于一维数组,可以保存任何数据类型 Series 由索引(index)和列组成,函数:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/70f8703fc3c84556b62330657e46c1ab.png) 复制代码
三个参数分别有相关意义,可以通过numpy、数据字典等去创建,只要是一维数组。没有指定标签默认递增按0、1、2、3、4、5...等等。主要设置的为index,修改可以按指定索引进行指定,不修改默认从0开始。
结构图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/14e3c5886abd4804894ca73828097e2f.png)
- 0、1、2 表示行索引
- 李四、王五、张三表示数据值
- dtype 表示数据值的类型

## 4.1创建Series对象的方式
### 4.1.1创建Series空对象
举例说明:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2fe3ea15c46440099ffb8d91520809c2.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/91b18e47746b49768f437445edb8106e.png)
直接赋值创建Series 对象
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/112b2c3b0bf74603b73ece504c613f9b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/82ae40b0d45642ebaf85deeab02b43f0.png)
### 4.1.2 ndarray 创建 Series 对象
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ecd5a84c3f614fe29cd1df66469c9a8a.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/303578aae303479a902728d2809d6c61.png)
### 4.1.3 字典创建 Series 对象
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3e41cc4b66de479e8cdaae041151971e.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f7220e9469e046ae85e43ce8c91a58c1.png)
### 4.2 Series 常用属性
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c91a9fd5fcd04e81a5c6c5b6bff6d56f.png)
举例相关参数输出:

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/77c7f0900e8a483e8ff4de9f5a14fd4a.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d26a1066c6af4564955045f08a1fe836.png)
## 4.4 Series 常用方法
### 4.4.1 head() 和 tail()
查看 Series 的某一部分数据,使用 head() 或者 tail() 方法。其中 head() 返回前 n 行数据,默认显示前 5 行数据,tail() 返回后 n 行数据,默认为后 5 行
举例说明:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dc356f083a4e4a5086f2ae3e4ba9381e.png)
输出head=3时候,结果输出
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e8640efb63eb4b1fb9a2f1d4c667d1a7.png)
输出tail()的时候结果打印
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8d95996e50414c3aa64c912145f60e70.png)
输出isnull()得到的结果和notnull得到的结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e0f707fe7d8c4ad88d5fb3f21aa7404e.png)
## 5.DataFrame(重点)
概念:DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。
结构示意图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f8d3eee7bbff40e8850d35ec0ad60269.png)
DataFrame 的每一列数据都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。
同 Series 一样,DataFrame 自带行标签索引,默认为"隐式索引"即从 0 开始依次递增,行标签与 DataFrame 中的数据项一一对应当然你也可以用"显式索引"的方式来设置行标签。
DataFrame 构造方法如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/eef9ab7ca4e141c98ad5c2d14e760f64.png)
## 5.1创建DataFrame对象
创建 DataFrame 对象的方式:
- 列表
- 字典
- Series 
- Numpy ndarrays
- 另一个 DataFrame
### 5.1.1创建DataFrame空对象
举例:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/54dcbfb8627b48c3b855731bd69d6495.png)
## 5.1.2 列表创建 DataFrame 对象
举例:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/20a72da940e449a4bea964162f656b14.png)
修改列名:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4eb28d350d564012bc8d052c266da3b8.png)
### 5.1.3 列表嵌套列表创建 DataFrame 对象
案例:

## 5.2列索引操作
DataFrame 可以使用列索(columns index)引来完成数据的选取、添加和删除操作
### 5.2.1选取数据
举例:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c590e155dac0421f95315f2b621ae523.png)
### 5.2.2 添加数据
添加新列
注意事项:df添加新列,可以用列表、ndarray、series添加:
#列表和ndarray添加的时候,行数要和df中的数据行数一致,series的行数可以不一致
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/74c97f0332f3431ca950c5d737262b17.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c8174885c5a6499dab4e9c5ba9ec17bd.png)
  #inser在指定列插入一列数据
  #loc:指定列的索引值
  #column:要插入新列的列名
  #value:要插入列值
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/83f89d5c5d9f4995869d3bc4f4463924.png)

### 5.2.3 修改数据
修改某一列的值

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ed1de32107404ed99445c23bb98ae3a9.png)
### 5.2.4删除数据
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5c4c054cc1d1452a8da83c0740c9b4c4.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/57ae77b91bc84f29a1436f1eb6983bd0.png)

labels、axis、inplace为记忆的重点
  #drop:删除列
  #labels:要删除的列(行)标签
  #axis:轴,axis=0:按行删除; axis=1: 按列删除
  #inplace:是否在原DataFrame上删除,为True则在源Dataframe上删除
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5a24559d17c244718b53caf3186576f5.png)
## 5.3行索引操作
### 5.3.1loc选取数据
df.loc[] 只能使用标签索引,不能使用整数索引。当通过标签索引的切片方式来筛选数据时,它的取值前闭后闭,也就是只包括边界值标签(开始和结束)

loc方法返回的数据类型:

1.如果选择单行或单列,返回的数据类型为Series

2.选择多行或多列,返回的数据类型为DataFrame

3.选择单个元素(某行某列对应的值),返回的数据类型为该元素的原始数据类型(如整数、浮点数等)。
参数**:

- row_indexer:行标签或布尔数组。
- column_indexer:列标签或布尔数组。

举例:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3a31832f065048ebbb821e8e3c2190ce.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b96561cd762e429cbded998454aa1323.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d367b3fba6e74a4da17b606a6917510a.png)


### 5.3.2iloc 选取数据
	 **iloc 方法用于基于位置(integer-location based)的索引**,即通过行和列的整数位置来选择数据。不能通过行或列索引标签获取数据
获取行索引位置为0的行数据
参数:
- row_indexer:行位置或布尔数组。
- column_indexer:列位置或布尔数组
- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/bf737423a6814794bf57c27022b5ed12.png)
切片范围是左闭右闭区间
iloc区间是左闭右开区间
通过切片获取索引位置为0-2的行数据,切片的取值范围是左闭右开区间
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/312dfcfbf62b4e1eb4f7c2ca565bf656.png)
### 5.3.3 切片多行选取
	通过切片的方式进行多行数据的选取
通过行索引位置和列索引位置获取对应的数据,返回的是一个数值
得到的结果为5
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/df7a4c5866794bcea8f65465960d96db.png)
### 5.3.4 添加数据行
append() 方法用于将一个 Series 或 DataFrame 追加到另一个 DataFrame 的末尾。
语法:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a3133ae288ca4a3ba0546ffbe6f7238c.png)参数:
1. other:
   - 类型:Series 或 DataFrame。
   - 描述:要追加的数据。
2. ignore_index:
   - 类型:布尔值,默认为 False。
   - 描述:如果为 True,则忽略原 DataFrame 的索引,并生成新的整数索引,索引值默认从0开始。
3. verify_integrity:
   - 类型:布尔值,默认为 False。
   - 描述:如果为 True,则在创建具有重复索引的 DataFrame 时引发 ValueError。
4. sort:
   - 类型:布尔值,默认为 False。
   - 描述:如果为 True,则在追加之前对列进行排序。

### 5.3 删除数据行
       您可以使用行索引标签,从 DataFrame 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。使用的是 drop 函数。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/110f6e01e7dc4e93ad17862b79bb5ca0.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/71985db3fa9249b1bdfc656e99147a9c.png)
## 5.4 常用属性和方法
DataFrame 的属性和方法,与 Series 基本相同

|  名称  |                      属性和方法描述                      |
| :----: | :------------------------------------------------------: |
|   T    |                       行和列转置。                       |
|  axes  |       返回一个仅以行轴标签和列轴标签为成员的列表。       |
| dtypes |                 返回每列数据的数据类型。                 |
| empty  | DataFrame中没有数据或者任意坐标轴的长度为0,则返回True。 |
|  ndim  |                轴的数量,也指数组的维数。                |
| shape  |          返回一个元组,表示了 DataFrame 维度。           |
|  size  |                 DataFrame中的元素数量。                  |
| values |        使用 numpy 数组表示 DataFrame 中的元素值。        |
| head() |                    返回前 n 行数据。                     |
| tail() |                    返回后 n 行数据。                     |
相关推荐
风象南20 分钟前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
曲幽42 分钟前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
Mintopia1 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮2 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬2 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia2 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区2 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两5 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
敏编程5 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python