[人工智能自学] Python包学习-pandas

news/2025/1/14 21:41:25/

紧接上篇numpy的学习教程
本篇参考:
Pandas 教程|菜鸟教程
官方教程 - 10分钟入门pandas¶
joyful-pandas
pandas中文教程
它建立在 NumPy 库的基础之上,提供了高效的数据结构和数据分析工具,使得在 Python 中进行数据操作变得更加容易和高效。

Pandas 提供了丰富的功能,包括:
数据清洗:处理缺失数据、重复数据等。
数据转换:改变数据的形状、结构或格式。
数据分析:进行统计分析、聚合、分组等。
数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。

核心数据结构

Series(一维数据结构)

存储不同类型的数据,如整数、浮点数、字符串等。它由一组数据和与之相关的索引组成。索引默认是从 0 开始的整数序列,但也可以自定义。

python">s = pd.Series([1,3,5,np.nan,6,8])

0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64

数据访问:
可以通过索引来访问 Series 中的元素。例如,要获取 ‘City B’ 的人口数量,可以使用population[‘City B’],它会返回 200000。

DataFrame(二维数据结构)

类似于电子表格或者 SQL 表。它是一个二维表格,由行索引、列索引和数据组成。每列的数据类型可以不同。

python">data = {'Name': ['Alice', 'Bob', 'Charlie'],'Math': [90, 80, 70],'English': [85, 75, 90]}
df = pd.DataFrame(data)

例子2:

python">df2 = pd.DataFrame({ 'A' : 1.,'B' : pd.Timestamp('20130102'),'C' : pd.Series(1,index=list(range(4)),dtype='float32'),'D' : np.array([3] * 4,dtype='int32'),'E' : pd.Categorical(["test","train","test","train"]),'F' : 'foo' })

在这里插入图片描述

可以通过列名来访问列数据,如df[‘Math’]会返回包含数学成绩的 Series。也可以通过loc(基于标签的索引)和iloc(基于整数位置的索引)来访问行和列。例如,df.loc[0, ‘Name’]会返回第一行(索引为 0)的 ‘Name’ 列的值,即 ‘Alice’;df.iloc[1, 2]会返回第二行(索引为 1)第三列(索引为 2)的值,即 90。
两个series可以拼接成1个dataFrame

series和dataframe的关系:

在这里插入图片描述

python">import pandas as pd# 创建两个Series对象
series_apples = pd.Series([1, 3, 7, 4])
series_bananas = pd.Series([2, 6, 3, 5])# 将两个Series对象相加,得到DataFrame,并指定列名
df = pd.DataFrame({ 'Apples': series_apples, 'Bananas': series_bananas })# 显示DataFrame
print(df)

在这里插入图片描述

数据读取和写入

读取数据

读取多种格式的数据,如 CSV、Excel、SQL 数据库等。
以读取 CSV 文件为例,使用read_csv函数。假设我们有一个名为 ‘data.csv’ 的文件,其中包含一些数据:

python">df = pd.read_csv('data.csv')

从 CSV 文件读取数据并加载为 DataFrame
filepath_or_buffer (路径或文件对象),sep (分隔符),header (行标题),names (自定义列名),dtype (数据类型),index_col (索引列)
在这里插入图片描述

写入数据

可以将 DataFrame 的数据写入到各种格式的文件中。例如,要将 DataFrame 写入到 CSV 文件,可以使用to_csv函数:

python">df.to_csv('new_data.csv', index=False)

index=False表示不将行索引写入文件。如果要写入 Excel 文件,可以使用to_excel函数。
在这里插入图片描述

数据处理

head()

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

python">df = pd.read_csv('nba.csv')

在这里插入图片描述

python">import pandas as pddf = pd.read_csv('nba.csv')print(df.head(10))

tail()

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。

info()

返回表格的一些基本信息:

python">import pandas as pddf = pd.read_csv('nba.csv')print(df.info())

在这里插入图片描述

Excel

在这里插入图片描述

JSON

在这里插入图片描述

数据分析和操作

清洗空值

删除包含空字段的行,可以使用 dropna() 方法

python">DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。
how:默认为 ‘any’ 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。
thresh:设置需要多少非空值的数据才可以保留下来的。
subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。
inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。

通过 isnull() 判断各个单元格是否为空。

python">import pandas as pddf = pd.read_csv('property-data.csv')print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

在这里插入图片描述
Pandas 把 n/a 和 NA 当作空数据,na 不是空数据,不符合我们要求,我们可以指定空数据类型

python">import pandas as pdmissing_values = ["n/a", "na", "--"]
df = pd.read_csv('property-data.csv', na_values = missing_values)print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

在这里插入图片描述

查看数据

在这里插入图片描述

数据清洗

在这里插入图片描述

相关性热图(Correlation Heatmap)

数据准备

python">import pandas as pd
data = {'Math': [90, 80, 70, 85, 95],'Chinese': [80, 75, 70, 80, 85],'English': [80, 75, 70, 80, 85],'Physics': [90, 80, 70, 85, 95],'Chemistry': [80, 75, 70, 80, 85]}
df = pd.DataFrame(data)

计算相关性矩阵

python">correlation_matrix = df.corr()
print(correlation_matrix)
      Math  Chinese  English  Physics  Chemistry

Math 1.0 0.8 0.8 1.0 0.8
Chinese 0.8 1.0 1.0 0.8 1.0
English 0.8 1.0 1.0 0.8 1.0
Physics 1.0 0.8 0.8 1.0 0.8
Chemistry 0.8 1.0 1.0 0.8 1.0

绘制相关性热图(以 Seaborn 为例)

python">import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.show()

数据排序与聚合

在这里插入图片描述

Pandas 数据可视化

在这里插入图片描述


http://www.ppmy.cn/news/1563135.html

相关文章

深入了解 Redis Stream 数据类型及其在事件流系统中的应用

深入了解 Redis Stream 数据类型及其在事件流系统中的应用 1. 什么是 Redis Stream 数据类型? Redis Stream 是 Redis 5.0 引入的一种新数据类型,专为日志、消息队列和事件流设计。它支持高吞吐量的消息生产与消费,适用于构建实时事件驱动的…

UniAPP和Vue3生命周期hook

Uni-app 是一个使用 Vue.js 开发跨平台应用的框架,支持编译到多个平台(如 iOS、Android、H5、微信小程序等)。在 Uni-app 中,生命周期钩子(Lifecycle Hooks)用于在应用或页面的不同阶段执行特定的逻辑。理解…

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

git相关操作笔记

git相关操作笔记 1. git init git init 是一个 Git 命令,用于初始化一个新的 Git 仓库。执行该命令后,Git 会在当前目录创建一个 .git 子目录,这是 Git 用来存储所有版本控制信息的地方。 使用方法如下: (1&#xff…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里,阿杰正在他那充满科技感的实验室里,对着一堆奇奇怪怪的仪器发呆。突然,手机铃声如一道凌厉的剑气划破寂静,原来是工厂的赵厂长打来的紧急电话:“阿杰啊,咱们工厂新…

【Uniapp-Vue3】组合式API中的组件的生命周期函数(钩子函数)

在Uniapp中生命周期函数用得较多的是onMounted和onUnmounted。 一、onMounted函数 如果我们想要获得DOM元素,就需要给DOM标签上添加ref属性,并定义一个相同属性名的变量。 但是我们输出这个DOM元素为NULL 如果我们使用onMounted就能获得到DOM元素&…

excel设置好的可选择列数据后,如何快速输入到单元格中?

当设置好列的【数据】-【数据有效性】-【序列】后,在单元格中输入可选择数据的开头,就会提示出对应的可选择数据,然后,按一下键盘上的【↓】键,再按回车,即可快速输入到单元格中。