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])               

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机短信验证码自动转发到服务器

今天写一个自动化处理程序,需要验证码登录,怎么样把手机收到的短信自动转发到服务器接口呢? 利用ios手机快捷指令的功能 打开快捷指令点击中间自动化点击右上角号选择信息信息包含选取,输入验证码选择立即执行点击下一步按下图配…

程序汪接的4万智慧餐饮项目

本文章来自程序汪背后的私活小团队,开发智慧餐厅的小程序 由于程序汪太忙于是把这个项目让一个靠谱粉丝开发了,当然开发质量和进度我会跟踪,具体分析如下 B站【我是程序汪】 老程序员接了一个4万的智慧餐饮项目,开发周期60天 小程…

Docker中常见的命令行

1 docker的全部命令 docker attach #连接到正在运行中的容器 docker build #使用 Dockerfile 创建镜像 docker builder #管理builds docker builder prune #清除build缓存 docker checkpoint #管理checkpoints docker checkpoint create #从正在运行的容器创建检…

LATTICE进阶篇DDR2--(2)详解IPUG35---基于官方例程

前言 本章主要讲述根据《DDR & DDR2 SDRAM Controller IP Cores User’s Guide 》数据手册,配合ddr2的demo仿真,学习DDR2的IP核时序控制。 器件:Lattice ECP3 环境:Win10 Diamond3.13 ModelSim SE-64 10.5 一、下载DDR2…

【链表专题】(2. 两数相加 23. 合并 K 个升序链表 25. K 个一组翻转链表)

文章目录 2. 两数相加23. 合并 K 个升序链表25. K 个一组翻转链表 2. 两数相加 题目链接: leetcode2. 两数相加 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode cur1 l1,cur2 l2;ListNode newHead new ListNode(0);ListNode prev ne…

STM32的简介

内存 一般MCU包含的存储空间有FLASH和RAM,(RAM和flash又有片上和片外的区别,片上表示mcu自带的,已经封装在MCU内部的,片外表示外挂的,当项目中需要做一些复杂的应用,会存在资源不足的情况,这时…

MIT最新研究成果 机器人能够从错误中纠偏 无需编程介入和重复演示

目前科学家们正在努力让机器人变得更加智能,教会他们完成诸如擦拭桌面,端盘子等复杂技能。以往机器人要在非结构化环境执行这样的任务,需要依靠固定编程进行,缺乏场景通用性,而现在机器人的学习过程主要在于模仿&#…

LeetCode 双指针专题

11.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不…

数据结构——lesson13排序之计数排序

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

基于单片机锂电池电量检测数码管显示系统设计

**单片机设计介绍,基于单片机锂电池电量检测数码管显示系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机锂电池电量检测数码管显示系统设计的主要目标是实时、准确地检测锂电池的电量,并…

【python】常用函数汇总(持续更新……)

文章目录 【numpy.exp()】返回e的幂次方,e是一个常数为2.71828【np.dot()】矩阵相乘【np.linalg.inv()】矩阵求逆 【numpy.exp()】返回e的幂次方,e是一个常数为2.71828 举例:numpy.exp() 【np.dot()】矩阵相乘 【要点】 1、前者的列数后者…

浅谈Spring体系的理解

浅谈Spring知识体系 Spring Framework架构图Spring家族技术生态全景图XMind汇总 本文不涉及细节,主要回答两个问题: Spring家族技术生态全景图有哪些Spring Framework架构下每个模块有哪些东西,以及部分模块之间的关联关系 Spring Framework架…

iOS - Runtime - Class的结构

文章目录 iOS - Runtime - Class的结构前言1. Class的结构1.1 Class的结构1.1.1 objc_class1.1.2 class_rw_t1.1.3 class_ro_t 1.2 class_rw_t和class_ro_t的区别1.3 class_rw_t和class_ro_t的关系1.3.1 分析关系1.3.2 原因 1.4 method_t1.4.1 Type Encoding1.4.2 types说明1.4…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

深度学习算法概念介绍

前言 深度学习算法是一类基于人工神经网络的机器学习方法&#xff0c;其核心思想是通过多层次的非线性变换&#xff0c;从数据中学习表示层次特征&#xff0c;从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功&#xf…

STM32的IAP技术,BootLoader

来源 三种下载方式&#xff1a; 1、ICP&#xff1a;ST-Link, 2、ISP: FlyMcu, 3、IAP IAP简介 IAP技术的核心在于BootLoader程序的设计&#xff0c;这段程序预先烧录在单片机中&#xff0c;正常的APP程序可以使用BootLoader程序中的IAP功能写入&#xff0c;也可以两部分代码一…

docker使用教程

寒假用了docker 2个月没用 结果还重新安装docker 忘了怎么用 为了免得以后忘写下下面内容 # If you dont have a docker installed, youll need to install docker curl -s https://get.docker.com/ | sh # Use pip to install docker-compose pip install docker-compose…

排序第五篇 归并排序

一 简介 归并排序(Merge Sort) 的基本思想是&#xff1a; 首先将待排序文件看成 n n n 个长度为1的有序子文件&#xff0c; 把这些子文件两两归并&#xff0c; 得到 n 2 \frac{n}{2} 2n​ 个长度为 2 的有序子文件&#xff1b; 然后再把这 n 2 \frac{n}{2} 2n​ 个有序的子…

EI期刊和EI会议有哪些不同?别再傻傻分不清

EI工程索引是综合性检索机构&#xff0c;是三个著名学术检索系统之一&#xff0c;EI工程索引也分为EI期刊和EI会议&#xff0c;那么两者有哪些不同&#xff1f;作者又该如何选&#xff1f;本文系统分享一下相关的知识&#xff0c;仅供学术人员参考&#xff1a; 第一、文章质量不…

2014年认证杯SPSSPRO杯数学建模A题(第二阶段)轮胎的花纹全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现&#xff1a; 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要&#xff0c;轮胎表面常会加工出不同形状的花纹。在设计轮胎时&#xff0c;往往要针对其使用环境&#xff0c;设计出相应的花纹形状。   第二阶段问…