人工智能理论之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 行数据。                     |
相关推荐
Mr. zhihao5 分钟前
装饰器模式详解:动态扩展对象功能的优雅解决方案
java·开发语言·装饰器模式
zyhomepage6 分钟前
科技的成就(六十四)
开发语言·人工智能·科技·算法·内容运营
百流9 分钟前
Pyspark中pyspark.sql.functions常用方法(4)
1024程序员节
Ethan Wilson12 分钟前
C++/QT可用的websocket库
开发语言·c++·websocket
qq210846295313 分钟前
【Ubuntu】Ubuntu22双网卡指定网关
1024程序员节
YueTann31 分钟前
APS开源源码解读: 排程工具 optaplanner II
1024程序员节
kinlon.liu39 分钟前
安全日志记录的重要性
服务器·网络·安全·安全架构·1024程序员节
挽安学长40 分钟前
油猴脚本-GPT问题导航侧边栏增强版
人工智能·chatgpt
爱编程— 的小李43 分钟前
开关灯问题(c语言)
c语言·算法·1024程序员节
戴着眼镜看不清1 小时前
国内对接使用GPT解决方案——API中转
人工智能·gpt·claude·通义千问·api中转