Python的pandas库基础知识(超详细教学)
目录
一、配置环境
二、序列和数据表
2.1 初始化
2.2 获取数值
2.3 获取索引
2.4 索引取内容
2.5 索引改变取值
2.6 字典生成序列
2.7 计算取值出现次数
2.8 数据表
2.9 数据表添加新变量
2.10 获取列名
2.11 根据列名获取数据
2.12 输出固定行
2.13 输出多行
2.14 输出指定行和列
2.15 输出性别为“男”的行和列
2.16 获取指定行
2.17 获取指定列
2.18 获取指定位置数据
2.19 索引转化
2.20 判断条件
2.21 重新赋值
三、数据聚合和分组运算
3.1 获取数据集
3.2 读取数据集
3.3 计算每列均值
3.4 计算每列的最小值
3.5 计算每列的最大值
3.6 计算每列的样本数量
3.7 行计算
3.8 分组计算均值
3.9 分组计算偏度
3.10 聚合运算
3.10.1 分组前
3.10.2 分组后
四、数据可视化
4.1 安装matplotlib库
4.2 检测matplotlib库
4.3 箱线图
4.4 散点图
4.5 六边形热力图
4.6 折线图
Pandas是Python中用于数据处理和分析的核心库,提供了快速、灵活且明确的数据结构,主要包括一维的Series和二维的DataFrame。它支持从CSV、Excel、SQL等多种数据源导入数据,并具备数据清洗、合并、重塑、分组统计、时间序列分析等功能。Pandas还易于与其他Python数据分析库集成,是金融、统计、社会科学和工程等领域进行数据分析和处理的强大工具。
一、配置环境
在命令行中运行以下命令:
pip show pandas

如果为以下内容,则表示未安装pandas库

要安装Pandas库,你可以使用Python的包管理工具
pip。在命令行界面(例如终端、命令提示符或Anaconda Prompt,取决于你的操作系统和Python安装方式)中,输入以下命令:
pip install pandas

安装成功展示图:

二、序列和数据表
2.1 初始化
Series可以存储任何数据类型,例如整数、浮点数、字符串、python对象等,每个元素都有一个索引。
import pandas as pdA = pd.Series(data = [1, 2, 3, 4, 5], index = ["A", "B", "C", "D", "E"], name = "A1")
print(A)

2.2 获取数值
import pandas as pdA = pd.Series(data = [1, 2, 3, 4, 5], index = ["A", "B", "C", "D", "E"], name = "A1")
print(A)
print("数值:", A.values)

2.3 获取索引
import pandas as pdA = pd.Series(data = [1, 2, 3, 4, 5], index = ["A", "B", "C", "D", "E"], name = "A1")
print(A)
print("索引:", A.index)

2.4 索引取内容
import pandas as pdA = pd.Series(data = [1, 2, 3, 4, 5], index = ["A", "B", "C", "D", "E"], name = "A1")
print(A)
print(A[["A", "C"]])

2.5 索引改变取值
import pandas as pdA = pd.Series(data = [1, 2, 3, 4, 5], index = ["A", "B", "C", "D", "E"], name = "A1")
print(A)
A[["A", "C"]] = [11, 12]
print(A)

2.6 字典生成序列
import pandas as pdA = pd.Series({"A":1, "B":2, "C":3, "D":4})
print(A)

2.7 计算取值出现次数
import pandas as pdA = pd.Series({"A":1, "B":2, "C":3, "D":4, "E":2, "F":3})
print(A.value_counts())

2.8 数据表
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"]}
B = pd.DataFrame(A)
print(B)

2.9 数据表添加新变量
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"]}
B = pd.DataFrame(A)
print(B)
B["high"] = ["180", "183", "160", "178", "158"]
print(B)

2.10 获取列名
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B)
print("数据表列名:", B.columns)

2.11 根据列名获取数据
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B)
print(B[["name", "sex"]])

2.12 输出固定行
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.loc[2])

2.13 输出多行
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.loc[2 : 4])

2.14 输出指定行和列
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.loc[2 : 4, ["name", "high"]])

2.15 输出性别为“男”的行和列
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.loc[B.sex == "男", ["name", "sex"]])

2.16 获取指定行
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.iloc[0 : 2])

2.17 获取指定列
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.iloc[ : , 0 : 2])

2.18 获取指定位置数据
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(B.iloc[0 : 2, 0 : 2])

2.19 索引转化
import numpy as np
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
# 转换为列表
print(B.iloc[list(B.sex == "男"), 0 : 3])
# 转换为数组
print(B.iloc[np.array(B.sex == "男"), 0 : 3])

2.20 判断条件
import numpy as np
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
print(list(B.age >= "18"))

2.21 重新赋值
import numpy as np
import pandas as pdA = {"name": ["小米", "小华", "小魅", "小破", "小领"],"age": ["20", "18", "16", "23", "19"],"sex": ["男", "男", "女", "男", "女"],"high": ["180", "183", "160", "178", "158"]}
B = pd.DataFrame(A)
B.high = ["179", "186", "168", "183", "160"]
print(B)
三、数据聚合和分组运算
3.1 获取数据集
iris.csv(iris数据集、鸢尾花数据集)资源-CSDN文库
https://download.csdn.net/download/Z0412_J0103/90215255
3.2 读取数据集
鸢尾花数据集(Iris Dataset),又称安德森鸢尾花卉数据集(Anderson’s Iris Data Set),是数据科学与机器学习领域中最著名的经典数据集之一。
鸢尾花数据集可以通过多种方式获取,如Scikit-learn提供的内置数据集,以及UCI机器学习库等。获取后,可以使用Python等编程语言进行数据加载、预处理和模型训练等操作。
鸢尾花数据集以其简洁明了的数据结构和广泛的应用场景,成为了机器学习初学者的首选案例。通过学习和实践这一数据集,初学者可以逐步掌握机器学习的基础知识和技能。
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
print(iris.head())

3.3 计算每列均值
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
print(iris.iloc[ : , 1 : 5].apply(func = np.mean, axis = 0))

3.4 计算每列的最小值
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
min = iris.iloc[ : , 1 : 5].apply(func = np.min , axis = 0)
print(min)

3.5 计算每列的最大值
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
max = iris.iloc[ : , 1 : 5].apply(func = np.max , axis = 0)
print(max)

3.6 计算每列的样本数量
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
size = iris.iloc[ : , 1 : 5].apply(func = np.size , axis = 0)
print(size)

3.7 行计算
只展示前五行
其中代码的axis=0要改成axis=1
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
data = iris.iloc[0 : 5, 1 : 5].apply(func = (np.min, np.max, np.mean, np.std, np.var) , axis = 1)
print(data)

3.8 分组计算均值
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
res = iris.drop("Id", axis = 1).groupby(by = "Species").mean()
print(res)

3.9 分组计算偏度
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
res = iris.drop("Id", axis = 1).groupby(by = "Species").skew()
print(res)

3.10 聚合运算
3.10.1 分组前
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
res = iris.drop("Id", axis = 1).agg({"SepalLengthCm" : ["min", "max", "mean"],"SepalWidthCm" : ["min", "max", "mean"],"PetalLengthCm" : ["min", "max", "mean"]})
print(res)

3.10.2 分组后
import numpy as np
import pandas as pdiris = pd.read_csv("D:/iris.csv")
res = (iris.drop("Id", axis = 1).groupby(by = "SepalLengthCm").agg({"SepalLengthCm" : ["min", "max", "mean"],"SepalWidthCm" : ["min"],"PetalLengthCm" : ["skew"]}))
print(res)

四、数据可视化
Mtplotlib是Python中一个广泛使用的绘图库,它提供了一个类似于MATLAB的绘图框架。Mtplotlib可以生成高质量的图表,这些图表可以用于数据可视化、科学研究、教育以及出版等领域。
4.1 安装matplotlib库
pip install matplotlib

安装成功展示图:

4.2 检测matplotlib库
pip show matplotlib

4.3 箱线图
import numpy as np
import pandas as pd
from matplotlib import pyplot as pltiris = pd.read_csv("D:/iris.csv")
iris.iloc[ : , 1 : 6].boxplot(column = ["SepalLengthCm", "SepalWidthCm", "PetalLengthCm", "PetalWidthCm"], by = "Species", figsize=(10,10))
plt.show()

4.4 散点图
import numpy as np
import pandas as pd
from matplotlib import pyplot as pltiris = pd.read_csv("D:/iris.csv")
color = iris.Species.map({"setosa" : "blue", "versicolor" : "green", "virginica" : "red"})
iris.plot(kind = "scatter" , x = "SepalLengthCm", y = "SepalWidthCm", s = 30, c = color, figsize = (10,10))
plt.show()

4.5 六边形热力图
import numpy as np
import pandas as pd
from matplotlib import pyplot as pltiris = pd.read_csv("D:/iris.csv")
iris.plot(kind = "hexbin" , x = "SepalLengthCm", y = "SepalWidthCm", gridsize = 15, figsize = (10,7), sharex = False)
plt.show()

4.6 折线图
import numpy as np
import pandas as pd
from matplotlib import pyplot as pltiris = pd.read_csv("D:/iris.csv")
iris.iloc[ : , 0 : 5].plot(kind = "line", x = "Id", figsize = (12, 8))
plt.show()

上一篇文章:Python的Numpy库应用入门(超详细教程)-CSDN博客
https://blog.csdn.net/Z0412_J0103/article/details/144840505下一篇文章: Python的Matplotlib库应用(超详细教程)-CSDN博客
https://blog.csdn.net/Z0412_J0103/article/details/144900714
相关文章:
Python的pandas库基础知识(超详细教学)
目录 一、配置环境 二、序列和数据表 2.1 初始化 2.2 获取数值 2.3 获取索引 2.4 索引取内容 2.5 索引改变取值 2.6 字典生成序列 2.7 计算取值出现次数 2.8 数据表 2.9 数据表添加新变量 2.10 获取列名 2.11 根据列名获取数据 2.12 输出固定行 2.13 输出多行…...
【数据库】一、数据库系统概述
文章目录 一、数据库系统概述1 基本概念2 现实世界的信息化过程3 数据库系统内部体系结构4 数据库系统外部体系结构5 数据管理方式 一、数据库系统概述 1 基本概念 数据:描述事物的符号记录 数据库(DB):长期存储在计算机内的、…...
大数据智能选课系统
1.产品介绍 产品名称:大数据智能选课系统 一、产品概述 随着信息技术的快速发展,大数据技术在教育领域的应用越来越广泛。针对当前高校选课过程中的繁琐操作、资源分配不均等问题,我们研发了一款基于大数据智能分析的选课系统。本系统旨在…...
esp32开发笔记之一:esp32开发环境搭建vscode+ubuntu
最近想用esp32做一个物联网项目,踩坑N个终于有点心得,写下来避免和我一样的小白踩无谓的坑。 写在前面: 第一,大家一定要用linux系统作为编译工具,速度上是windows无法比的,不要因为不熟悉linux而选择win…...
赛灵思(Xilinx)公司Artix-7系列FPGA
苦难从不值得歌颂,在苦难中萃取的坚韧才值得珍视; 痛苦同样不必美化,从痛苦中开掘出希望才是壮举。 没有人是绝对意义的主角, 但每个人又都是自己生活剧本里的英雄。滑雪,是姿态优雅的“贴地飞行”,也有着成…...
Trie树算法
Trie树,也称为前缀树或字典树,是一种特殊的树型数据结构。它用于存储一组字符串,使得查找、插入和删除字符串的操作非常高效。类似这种, 模板: 这是用数组来模拟上图中的树的结构,逻辑上和上图结构一致。 …...
NLTK分词以及处理方法
在自然语言处理(NLP)的领域中,文本的处理是一个基础且核心的环节,特别是在大规模数据分析和文本挖掘中。无论是聊天机器人、情感分析,还是机器翻译,分词都是必不可少的步骤之一。分词的目的是将长篇的文本拆解为较小的单位(如单词或句子),这些单位是后续分析和处理的基…...
vue3树形组件+封装+应用
文章目录 概要应用场景代码注释综合评价注意事项功能拓展代码说明概要 创建一个基于Vue 3的树形结构组件,用于展示具有层级关系的数据,并提供了节点展开/折叠、点击等交互功能。以下是对其应用场景、代码注释以及综合评价和注意事项的详细说明。 应用场景 这个组件适用于需…...
kotlin项目无法访问Java类的问题
使用IntelliJ创建一个Kotlin项目,然后在src/main/kotlin中创建一个java接口:Animal.java,然后在Main.kt中打印这个java接口,如下: fun main() {println(Animal::class.java) }代码在编辑器中并没有报错,但…...
计算机网络 (30)多协议标签交换MPLS
前言 多协议标签交换(Multi-Protocol Label Switching,MPLS)是一种在开放的通信网上利用标签引导数据高速、高效传输的新技术。 一、基本概念 MPLS是一种第三代网络架构技术,旨在提供高速、可靠的IP骨干网络交换。它通过将IP地址映…...
qt-C++笔记之自定义继承类初始化时涉及到parents的初始化
qt-C笔记之自定义继承类初始化时涉及到parents的初始化 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QWidget …...
人才选拔中,如何优化面试流程
在与某大型央企的深入交流中,随着该企业的不断壮大与业务扩张,对技术人才的需求急剧上升,尽管企业加大了招聘力度并投入了大量资源,但招聘成效却不尽如人意。经过项目组细致调研与访谈,问题的根源逐渐浮出水面…...
2501wtl,皮肤技术
下载地址 设计目标 最重要的是使用方便,已有程序创建一个COM对象,调一个方法就可把界面外观全部改成Mac风格的. 另外一个目标是要有扩展性. 所以,基本设计是定义一个统一的接口,然后用不同实现.每一个实现单独放在一个COMDLL中,调用者选择一个类标创建对象就行了. 接口的定义…...
【面试题】技术场景 6、Java 生产环境 bug 排查
生产环境 bug 排查思路 分析日志:首先通过分析日志查看是否存在错误信息,利用之前讲过的 elk 及查看日志的命令缩小查找错误范围,方便定位问题。远程 debug 适用环境:一般公司正式生产环境不允许远程 debug,多在测试环…...
word论文排版常见问题汇总
word论文排版常见问题汇总 常用快捷键: Alt F9 正常模式与域代码模式切换 Ctrl F9 插入域代码 F9 刷新域代码显示,要注意选定后刷新才会有效果 word中在当前列表的基础上修改列表 在使用word时,我们会定义一个列表,并将其链接…...
传奇3仿韩服单机版安装教程+GM管理面板
今天为大家带来一款怀旧网单《传奇3仿韩服》的游戏架设,适用于单机娱乐, 仅供怀旧,本人已经安装游戏成功,特此带来详细安装教程。 适用环境 单机 视频演示 传奇3仿韩服单机 亲测截图 架设步骤 关闭默认杀毒软件和其它自己下的杀…...
第26章 汇编语言--- 内核态与用户态
汇编语言是低级编程语言的一种,它与特定计算机的硬件架构紧密相关。内核态和用户态是操作系统中进程运行的两种不同模式,它们用来区分操作系统内核代码和其他应用程序代码的执行环境。下面我将简要解释这两种状态,并给出一个简单的示例来展示…...
Spring bean的生命周期和扩展
接AnnotationConfigApplicationContext流程看实例化的beanPostProcessor-CSDN博客,以具体实例看bean生命周期的一些执行阶段 bean生命周期流程 生命周期扩展处理说明实例化:createBeanInstance 构造方法, 如Autowired的构造方法注入依赖bean 如UserSer…...
计算机网络 (33)传输控制协议TCP概述
一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层,即传输层,为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议,但两者在设计上有明显的不同&…...
Python3 JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集,但JSON是独立于语言的,很多编程语言都支持JSON格式数据的…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
