AI学习-Pandas数据处理分析

文章目录

      • 1. Pandas概述
      • 2. Series用法
        • 2.1 Series的创建
        • 2.2 Series的取值
        • 2.3 Series的相关方法
      • 3. DataFrame用法
        • 3.1 DataFrame创建
        • 3.2 DataFrame取值
        • 3.3 DataFrame相关方法

1. Pandas概述

​ Pandas 是一个开源的数据分析处理库,它应用在数据科学、统计分析、机器学习等领域。其中丰富的数据结构、数据操作函数能够简化数据清洗、转换、探索性分析以及数据可视化等过程。

数据结构类型

​ Pandas包含两种数据结构

  • Series:带标签的一维数组
  • **DataFrame **:二维数组,类似于表格或关系库的表
名称描述
Series是一种一维的数据结构,可以看作是带标签的一维数组。每个元素都可以通过标签(索引)进行访问
Series 可以存储任何NumPy支持的数据类型,并且同样支持各种算术和数据处理方法
DataFrameDataFrame 是 Pandas 的主打数据结构,类似于表格或关系型数据库中的表,
它是一个二维带标签的数据结构,可以容纳多种数据类型(整数、浮点数、字符串、布尔值等)的列。
每一列都可以有不同的名称,并且每一行和每一列都有唯一的索引。

主要特性

特性~
标签化索引(Indexing and Selection)强大的标签化索引功能,使得数据选取和过滤方便,包括行选择、列选择、条件筛选等。
数据导入导出(DataImport/Export)Pandas 支持从多种文件格式(CSV、Excel、SQL、JSON、HDF5等)导入和导出数据,
极大地方便了数据预处理阶段的工作。
分组/聚合(Groupby / Aggregation)groupby 方法允许用户对数据集按指定列进行分组,并在每个分组上执行聚合操作
关联/合并(Merge, Join, Concatenate)提供了合并多个数据集的功能,支持内连接、外连接等多种数据库风格的表连接操作。
重塑(Reshaping and Pivot Tables)提供了重塑和透视表功能,便于数据重塑和多维度分析。

安装pandas

#使用conda进行安装
conda install pandas

#使用pip进行安装
pip install pandas

2. Series用法

2.1 Series的创建
  • 函数说明以及示例
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
参数描述
dataSeries的主要数据内容,可以是列表、NumPy数组、字典或其他Series。若为字典,则键作为索引,值作为数据
index可选参数,用于指定Series的索引,默认为从0开始递增的整数型索引。当数据为字典时,可省略此参数;非字典类型数据时,其长度应与data中的元素数量相匹配
dtype可选的数据类型,如果指定了该参数,Pandas会尝试将所有数据转换为此类型
name用于给Series指定一个名称,该名称在后续的数据处理和可视化展示时可用于标识
copy布尔值,默认为False。设置为True时,构造函数将会创建一个新的独立副本而非原始数据的一个视图
fastpath内部使用的优化选项,默认为False。在特殊情况下启用以提升性能,通常无需用户直接操作
#导入pandas
import pandas as pd 
#创建一维数组(带有标签)
data=pd.Series([4,3,5,6,1]) 
data

#pandas 中两个重要的属性 values 和 index,
#values 是 Series 对象的原始数据。
#index 对 应了 Series 对象的索引对象

#查看原属数据
data.values
#显示:array([4, 3, 5, 6, 1])

#查看索引
data.inedx
#显示:RangeIndex(start=0, stop=5, step=1)

在这里插入图片描述

  • 使用列表创建Series,并自动分配默认索引
#创建一维数组
data = [1, 2, 3, 4, 5]
s = pd.Series(data)
  • 使用自定义索引创建Series:
#设置自定义索引
index = ['a', 'b', 'c', 'd', 'e'] 
data = [10, 20, 30, 40, 50] 
s = pd.Series(data, index=index)
#使用list创建自定义索引
data=pd.Series([4,3,2,1],index=list('abcd'))
  • 使用字典创建Series,字典的键成为Series的索引:
#设置自定义索引
data_dict = {'apple': 4, 'banana': 2, 'orange': 6}
s = pd.Series(data_dict)
  • 指定数据类型
#设置数据类型为float
data = [1, 2, 3, 4, 5] 
s = pd.Series(data, dtype='float')
  • 给Series命名
#设置seried名称
data = [1, 2, 3, 4, 5] 
s = pd.Series(data, name='xiu')
2.2 Series的取值

​ series可以像narray数组一样通过使用索引的方式,其索引分为位置索引标签索引。两种索引方式不同之处在于标签索引进行切片(获取其子集)时候 是左闭右闭,而位置索引是左闭右开。

index = ['a', 'b', 'c', 'd', 'e'] 
values = [10, 20, 30, 40, 50] 
data = pd.Series(values, index=index)
display('根据 key 获取:',data['a']) 
#切片且标签索引 显示 [a ~ d]包含d的数据  
display('切片获取:',data['a':'d'])
display('索引获取:',data[1]) 
#切片且位置索引 显示 [2 ~ 4)不包含4的数据  
display('索引切片:',data[2:4])

位置索引与标签索引有相同值 1,这时候 data[1]就不知道是按哪个 来获取,此时要使用 loc、iloc。

  • loc 表示的是标签索引
  • iloc 表示的是位置索引
data=pd.Series([5,3,2,5,9],index=[1,2,3,4,5])

#如果是位置索引1 则为5 如果是标签索引则是2 默认下边不会报错,但是默认使用标签索引
data[1] #等价于
data.loc[1]

#如果需要使用位置所以 用iloc
data.iloc[1]
2.3 Series的相关方法
  • mean 方法可以对某一列数据取平均数

  • min 方法获取最小值

  • max 方法获取最大值

  • std 方法获取标准差

  • sort_values方法排序,ascending=True 升序,False降序

  • data[condation]过滤条件

  • concat拼接

ages = pd.Series([20,24,30,35])
display('获取数据集中 Age 列的所有',ages) 
print('计算 Age 列的平均值:',ages.mean())
print('计算 Age 列的最大值:',ages.max())
print('计算 Age 列的最小值:',ages.min())
print('计算 Age 列的标准差:',ages.std()) 
display('对 Age 进行降序排序:',ages.sort_values(ascending=False))
display('筛选出 Age 大于平均值的数据:',ages[ages>ages.mean()])

ser1=pd.Series([1,2,3],index=list('ABC'))
ser2=pd.Series([4,5,6],index=list('DEF'))
pd.concat([ser1,ser2])

3. DataFrame用法

3.1 DataFrame创建
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
参数描述
dataSeries的主要数据内容,可以是列表、NumPy数组、字典或其他Series。若为字典,则键作为索引,值作为数据
index可选参数,用于指定Series的索引,默认为从0开始递增的整数型索引。当数据为字典时,可省略此参数;非字典类型数据时,其长度应与data中的元素数量相匹配
dtype可选的数据类型,如果指定了该参数,Pandas会尝试将所有数据转换为此类型
columns用于生成结果使用的列标签。如果数据没有列标签,则默认为RangeIndex(0, 1, 2,…,n)。如果数据包含列标签,则将执行列选择。
copy布尔值,默认为False。设置为True时,构造函数将会创建一个新的独立副本而非原始数据的一个视图

使用两个Series构建DataFrame

#series 对象 一个population 一个area
population_dict={'beijing':3000,'guangzhou':1800,'shanghai':1200} 
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
population_series=pd.Series(population_dict) 
area_series=pd.Series(area_dict) 

citys=pd.DataFrame({'area':area_series,'population':population_series})

在这里插入图片描述

指定 index属性创建

data=pd.DataFrame([area_dict,population_dict],index=['area','population'])

指定列索引columns创建

pd.DataFrame(population_series,area_series,columns=['population','area'])

在这里插入图片描述

使用二维数组创建

#创建一个3行2列的二维矩阵,列索引为a,b 行索引为e,f,g
pd.DataFrame(np.random.randint(0,10,(3,2)),columns=list('ab'),index=list('efg'))

在这里插入图片描述

3.2 DataFrame取值

需要在DataFrame创建的对象中使用括号中指明要选择的列名(多个传递数组),同Series类似其也拥有对应的普通索引(标签索引)、位置索引。

#数据准备
population_dict={'beijing':3000,'guangzhou':1800,'shanghai':1200} 
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
data=pd.DataFrame([area_dict,population_dict],index=['area','population'])

#取一列
data["beijing"]
#取多列
data[["beijing","shanghai"]]
  • loc 表示的是普通索引、输入行的名称(series里面叫做标签)
  • iloc 表示的是位置索引
#准备数据
data=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('ABCD'))

#默认获取所有行,只针对列进行选择
print('获取所有行,获取B列,使用普通索引获取:')
print(data.loc[:,'B'])
print('获取所有行,获取B列,使用位置索引获取:')
print(data.iloc[:,1])

print('获取a行,获取B列,使用普通索引获取:')
print(data.loc['a','B'])
print('获取A行,获取B列,使用位置索引获取:')
print(data.iloc[0,1])

# data.loc[${startRow}:${endRow},${startCloumn}:${endCloumn}]
print('获取所有行,获取BCD三列,使用普通索引获取:')
print(data.loc[:,'B':'D'])
print('获取所有行,获取BCD三列,使用位置索引获取:')
print(data.iloc[:,1:4])

#获取指定行、指定列的数据
print('获取ab行且BCD三列,使用普通索引获取:')print(data.loc['a':'b','B':'D'])
print('获取ab行获取BCD三列,使用位置索引获取:')print(data.iloc[0:1,1:4])
3.3 DataFrame相关方法
  • 条件过滤
  • concat拼接
data=pd.DataFrame({'Name':['zs','lisi','ww'],
'Sno':['1001','1002','1003'],
'Sex':['man','woman','man'],
'Age':[17,18,19],
'Score':[80,97,95]
},columns=['name',Sno','Sex','Age','Score'],index=['zs','lisi','ww'])
display('数据集',data)

#获取指定值
scores=data['Score']
display('输出数据中所有成绩大于平均值的记录',data[scores>scores.mean()])
display('获取成绩大于平均值得所有记录,只显示SnoAgeScore三列:',data[scores>scores.mean()].loc[:,['Sno','Age','Score']])
           
#拼接
df1=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),
                columns=list('ABCD'))
df2=pd.DataFrame(np.arange(12).reshape(3,4),index=list('efg'),
                columns=list('EFGH'))           
pd.concat([df1,df2])               

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502697.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python中的deque详解

文章目录 摘要示例1:基本使用示例2:使用maxlen限制队列长度示例3:使用deque实现滑动窗口算法示例 4: 使用 deque 实现旋转数组示例 5: 使用 deque 实现最大/最小栈示例 6: 使用 deque 实现广度优先搜索(BFS) 摘要 deq…

力扣56. 合并区间

Problem: 56. 合并区间 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将数组按内部的一维数组的第一项按从小到大的顺序排序; 2.创建二维结果数组merged,并将排序后的数组中的第一个一维度数组存入到merged中; 3.从后面的一…

理解游戏服务器架构-部署架构

目录 前言 我所理解的服务器架构 什么是否部署架构 部署架构的职责 进程业务职责 网络链接及通讯方式 与客户端的连接方式 服务器之间连接关系 数据落地以及一致性 数据库的选择 数据访问三级缓存 数据分片 读写分离 分布式数据处理 负载均衡 热更新 配置更新 …

express实现用户登录和注册接口

目录 1 创建数据库2 连接数据库3 集成ORM库4 创建业务逻辑5 创建路由7 测试接口总结 我们在编写后端接口的时候操作数据库是一种常见的功能需求,express本身并不提供直接操作数据库的能力,需要借助第三方库来操作数据库,本篇讲解一下软件开发…

【Java】LinkedList模拟实现

目录 整体框架IMyLinkedList接口IndexNotLegalException异常类MyLinkedList类成员变量(节点信息)addFirst(头插)addLast(尾插)在指定位置插入数据判断是否存在移除第一个相等的节点移除所有相等的节点链表的长度打印链表释放回收链表 整体框架 IMyLinkedList接口 这个接口用来…

2006-2023年2月各地级市城投债详细数据

2006-2023.2各地级市城投债详细数据 1、时间:2006-2023.2 2、来源:深圳证券交易所和上海证券交易所官网、人民银行、证券监督管理委员会等金融监管机构等官网 3、指标:省份、城市、证券代码、证券简称、债券简称、证券全称、债券初始面值单…

C语言使用STM32开发板手搓高端家居洗衣机

目录 概要 成品效果 背景概述 1.开发环境 2.主要传感器。 技术细节 1. 用户如何知道选择了何种功能 2.启动后如何进行洗衣 3.如何将洗衣机状态上传至服务器并通过APP查看 4.洗衣过程、可燃气检测、OLED屏显示、服务器通信如何并发进行 小结 概要 本文章主要是讲解如…

使用pdf表单域填充pdf内容

需要引用如下包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency>1、预先准备一个pdf模板&#xff0c;并在指定位置添加…

创建一个vue3 + ts + vite 项目

vite 官网&#xff1a; https://cn.vitejs.dev/guide/ 兼容性注意 Vite 需要 Node.js 版本 18&#xff0c;20。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 安装项目 1. 使用n…

政安晨:【Keras机器学习实践要点】(五)—— 通过子类化创建新层和模型

目录 介绍 安装 层级&#xff1a;状态&#xff08;权重&#xff09;与某些计算的组合 层可以有不可训练的重量 最佳实践&#xff1a;推迟权重的创建&#xff0c;直到输入的形状已知。 层可以递归组合 后端不可知层和特定后端层 add_loss()方法 可以选择在您的层上启用…

【DETR系列目标检测算法代码精讲】01 DETR算法01 DETR算法框架和网络结构介绍

为什么要有DETR 总所周知&#xff0c;传统的目标检测算法非常依赖于anchor和nms等手工设计操作&#xff0c;非常费时费力&#xff0c;自然而然的就产生了取消这些操作的想法。但是我们首先需要思考的是&#xff0c;为什么我们需要anchor和nms&#xff1f; 因为我们是没有指定…

3D汽车模型线上三维互动展示提供视觉盛宴

VR全景虚拟看车软件正在引领汽车展览行业迈向一个全新的时代&#xff0c;它不仅颠覆了传统展览的局限&#xff0c;还为参展者提供了前所未有的高效、便捷和互动体验。借助于尖端的vr虚拟现实技术、逼真的web3d开发、先进的云计算能力以及强大的大数据处理&#xff0c;这一在线展…

Docker Swarm安装部署应用

一、Docker Swarm核心概念 1、什么是Docker Swarm GitHub地址 Docker Swarm 是 Docker 官方推出的容器集群管理工具&#xff0c;基于 Go 语言实现。使用它可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机&#xff0c;快速打造一套容器云平台。 Docker Swarm 是生产…

Java线程池工作原理浅析

为什么要用线程池&#xff1f; 1、线程属于稀缺资源&#xff0c;它的创建会消耗大量系统资源 2、线程频繁地销毁&#xff0c;会频繁地触发GC机制&#xff0c;使系统性能降低 3、多线程并发执行缺乏统一的管理与监控 线程池的使用 线程池的创建使用可通过Executors类来完成…

【网站项目】泉文化管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Vue2(十二):Vuex环境搭建、Vuex工作原理、几个配置项、多组件共享数据、Vuex模块化

一、Vuex 1.概念 专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff08;use引入&#xff09;&#xff0c;对vue应用中多个组件的共享状态进行集中式的管理&#xff08;读&#xff0f;写&#xff09;&#xff0c;也是一种组件间通信的方式&…

String,StringBuffer,StringBuilder 的区别【大白话Java面试题】

String&#xff0c;StringBuffer&#xff0c;StringBuilder 的区别【大白话Java面试题】 大白话回答 1、可变/不可变类 String是不可变类。他被被final修饰&#xff0c;所以每一次的创建修改删除都要重新分配内存创建新的对象。 StringBuilder和StringBuffer是可变类&#xff…

Linux部署Sonarqube+Gogs+Jenkins(一)

Linux部署SonarqubeGogsJenkins 一、1.Linux安装JDK11环境1. 本地进行上传2. 进入到/usr/java目录&#xff0c;并且进行解压3. 配置文件/etc/profile&#xff0c;配置环境变量4.让对应的配置文件生效5. 验证 二、Linux安装Python环境三、Linux安装Jenkins环境1、/usr目录下创建…

ssm框架笔记-maven

html是骨头 css使皮肤 js是你能做的动作 MAVEN 依赖管理&#xff1a;1.声明dependenciys标签 2.maven search3。 版本号提取 3.$引用 3.2依赖传递和冲突 依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B&#xff0c;而 B 又依赖于模块或库 C&#xff0c;那么 A 会间…

ADT 创建表,并用ABAP往里面插数据

参考&#xff1a;Create Table Persistence and Generate Data | SAP Tutorials 4、Replace your code with following: CLASS zcl_generate_travel_data_xxx DEFINITIONPUBLICFINALCREATE PUBLIC .PUBLIC SECTION.INTERFACES if_oo_adt_classrun.PROTECTED SECTION.PRIVATE S…