【北京理工大学-Python 数据分析-3.1Pandas库的基本使用】

news2024/11/15 10:59:45

Pandas库的引用,常用两大功能Series(一维)和DataFrame(二维和多维)

Pandas是Python第三方库,提供高性能易用数据类型的分析工具。

Pandas基于NumPy实现,常与NumPy和Matplotlib一起使用。
Numpy和Pandas的对比

NupmyPandas
基础数据类型(主要是Ndarray数组类类型)扩展数据类型(包括Series和DataFrame)
关注数据的结构表达关注数据的应用表达(如何有效的清洗和运算)
维度:数据间的关系数据与索引间的关系
import pandas as pd
d=pd.Series(range(20))
d.cumsum()

Series类型
Series类型由一组数据与之相关的数据索引组成
Pandas既可以自动生成索引也可以自主定义索引。

Series的自动索引

import pandas as pd
d=pd.Series([9,8,7,6])
d

在这里插入图片描述
Series的自定义索引

import pandas as pd
b=pd.Series([9,8,7,6],index=['a','b','c','d'])
b

在这里插入图片描述
Series类型的创建
Series类型可以由如下类型创建

  • Python列表
  • 标量值
  • Python字典
  • ndarray
  • 其他函数

1.从标量值创建Series类型

import pandas as pd
S=pd.Series(25,index=['a','b','c'])
S

在这里插入图片描述
2.从字典创建Series类型
2.1直接使用字典

import pandas as pd
d=pd.Series({'a':9,'b':8,'c':7})
d

在这里插入图片描述
2.2字典和索引结合式

e=pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])
e

在这里插入图片描述
3.从ndarray类型创建

import pandas as pd
import numpy as np
n=pd.Series(np.arange(5))
n

在这里插入图片描述

import pandas as pd
import numpy as np
a=pd.Series(np.arange(5),index=np.arange(9,4,-1))
a

在这里插入图片描述
Series类型生成总结
Series类型可以由如下类型创建

  • Python列表,index与列表元素个数一致。
  • 标量值,index表达Series类型的尺寸。
  • Python字典,键值对中的“键”是索引,index从字典中进行选择操作。
  • ndarray()索引和数据都可以通过ndarray类型创建。
  • 其他函数,range()函数等。

Series类型的基本操作

  • Series类型包括index和values两部分。
  • Series类型的操作类似ndarray类型。
  • Series类型的操作类似Python字典类型。

Series类型的操作类似ndarray类型

  • 索引方法相同,采用[]。
  • NumPy中运算和操作可用于Series类型。
  • 可以通过自定义索引的列表进行切片。
  • 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片。
import pandas as pd 
b=pd.Series([9,8,7,6],['a','b','c','d'])
b
b[3]##取索引为3的值
b[:3]##切片索引,得到的仍然是Series系列的数据
b[b>b.median()]##获取大于b中位数的系列

上述结果分别
在这里插入图片描述
Series类型的操作类似Python字典类型

  • 通过自定义索引访问
  • 保留字in操作
  • 使用.get()方法
import pandas as pd
b=pd.Series([9,8,7,6],['a','b','c','d'])
b['b']##自定义索引
'c' in b##判断索引c是否在b的自定义索引里
0 in b##判断索引0是否存在b的索引里,注意这里只能判断自定义索引,对于默认索引不能判断
b.get('f',100)##为序列b添加元素

对应的结果

在这里插入图片描述
Series类型对其操作

import pandas as pd
a=pd.Series([1,2,3],['c','d','e'])
b=pd.Series([9,8,7,6],['a','b','c','d'])
a+b##对a和b中的数据索引对齐后在进行运算

在这里插入图片描述
Series类型的name属性
Series对象和索引都可以有一个名字,存储在属性.name中

import pandas as pd
b=pd.Series([9,8,7,6],['a','b','c','d'])
b.name='Series对象'
b.index.name='索引列'

在这里插入图片描述
Series类型的修改
Series对象可以随时修改并即刻生效

import pandas as pd
b=pd.Series([9,8,7,6],['a','b','c','d'])
b['a']=15
b.name='Series对象'
b.name='New Series'
b['b','c']=20
b

操作结果:修改之后原来的数据立马被修改
在这里插入图片描述
对Series类型的总结
Series是一维带‘标签’的数组
index_0 对应data_a
Series基本操作类似ndarray和字典,根据索引对齐。
Pandas库的DataFrame类型

  • DataFrame类型由共用相同索引的一组列组成。
  • DataFrame是一个表格型的数据类型,每列值类型可以不同。
  • DataFrame既有行索引,也有列索引。
  • DataFrame用于表达二维数据,但可以表达多维数据。
    在这里插入图片描述
    DataFrame类型的创建
  • 二维ndarray对象。
  • 由一维ndarray\列表、字典、元组或Series构成的字典。
  • Series类型。
  • 由其他的DataFrame类型。
    1.从二维ndarray对象创建
import pandas as pd
import numpy as np
d=pd.DataFrame(np.arange(10).reshape(2,5))
d

在这里插入图片描述
2.从一维ndarray对象字典创建

import pandas as pd
dt={'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([9,8,7,6],index=['a','b','c','d'])}
d=pd.DataFrame(dt)
d

在这里插入图片描述
3.从列表类型的字典创建

import pandas as pd
d1={'one':[1,2,3,4],'two':[9,8,7,6]}
d=pd.DataFrame(d1,index=['a','b','c','d'])
d

在这里插入图片描述

import pandas as pd 
d1={'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,102.0,100.1],
'同比':[120.7,127.3,119.4,140.9,101.4],
'定基':[121.4,127.8,120.0,145.5,101.6]}
d=pd.DataFrame(d1,index=['c1','c2','c3','c4','c5'])
d

在这里插入图片描述
在这里插入图片描述
DataFrame类型
DataFrame是二维带”标签“的数组,其操作类似Series,依据行列索引。
数据类型操作
如何改变Series和DataFrame对象?
增加或重排:重新索引
删除:drop
重新索引
.reindex()能够改变或重拍Series和DataFrame索引

import pandas as pd
d1={'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,102.0,100.1],
'同比':[120.7,127.3,119.4,140.9,101.4],
'定基':[121.4,127.8,120.0,145.5,101.6]}
d=pd.DataFrame(d1,index=['c1','c2','c3','c4','c5'])
d=d.reindex(index=['c5','c4','c3','c2','c1'])
d

在这里插入图片描述

d=d.reindex(columns=['城市','同比','环比','定基'])
d

在这里插入图片描述
重新索引
.reindex(index=None,columns=None,…)的参数

参数说明
index,columns新的行列自定义索引
fill_value重新索引中,用于填充确实位置的值
method填充方法,ffill当前值向前填充,bfill向后填充
limit最大填充量
copy默认True,生成新的对象,False时,新旧相等不复制

关于columns重新索引

n=d.columns.insert(4,'新增')
n2=d.reindex(columns=n,fill_value=200)
n2

在这里插入图片描述
Pandas的索引类型

  • Series和DataFrame的索引是Index类型
  • Index对象是不可修改类型
    索引类型的常用方法
方法说明
.append(idx)连接另一个Index对象,产生新的Index对象
.diff(idx)计算差集,产生新的Index对象
.intersection(idx)计算交集
.union(idx)计算并集
.delete(loc)删除loc位置处的元素
.insert(loc,e)在loc位置增加一个元素

例子

import pandas as pd
d1={'城市':['北京','上海','广州','深圳','沈阳'],
'环比':[101.5,101.2,101.3,102.0,100.1],
'同比':[120.7,127.3,119.4,140.9,101.4],
'定基':[121.4,127.8,120.0,145.5,101.6]}
d=pd.DataFrame(d1,index=['c1','c2','c3','c4','c5'])
d

nc=d.columns.delete(2)
nc

ni=d.index.insert(5,'c0')
ni

nd=d.reindex(index=ni,method='ffill')
nd

删除指定索引对象
.drop()能够删除Series和DataFrame指定行或列索引

a=pd.Series([9,8,7,6],indes=['a','b','c','d'])
a
a.drop(['b','c'])##不改变原来a的元素,若需要删除后的数据,需要新赋值

在这里插入图片描述

d.drop('c5')##删除第五行
d.drop('定基',axis=1##删除列中的定基

在这里插入图片描述

Pandas算术运算法则

  • 算术运算根据行列索引,补齐后运算,运算默认产生浮点数。
  • 补齐时缺项填充NaN(空值)
  • 二维和一维、一维和零位空间为广播运算。
  • 采用±*/符号进行的二元运算产生新的对象。
import pandas as pd
import numpy as np
a=pd.DataFrame(np.arange(12).reshape(3,4))
a
b=pd.DataFrame(np.arange(20).reshape(4,5))
b

a+b
a*b

在这里插入图片描述
在这里插入图片描述
数据类型的算术运算/方法形式运算

方法说明
.add(d,**argws)类型间加法运算,可选参数
.sub(d,**argws)类型间减法运算,可选参数
.mul(d,**argws)类型间的乘法运算
.div(d,**argws)类型间除法运算,可选参数
import pandas as pd
import numpy as np
a=pd.DataFrame(np.arange(12).reshape(3,4))
a
b=pd.DataFrame(np.arange(20).reshape(4,5))
b
b.add(a,fill_value=100)##表示b+a运算,然后a不足的部分,用100为基数进行运算,相加
a.mul(b,fill_value=0)##表示a*b,不足的部分用0计算

在这里插入图片描述

不同维度间为广播运算,一维Series默认在轴1参与运算。
比较运算法则

  • 比较运算只能比较相同索引的元素,不进行补齐。
  • 二维和一维、一维和零维间为广播运算。
  • 采用>,<,>=,<=,==,!=等符号进行的二元运算产生布尔对象。

同纬度运算,尺寸一致,若不同维度,由于不能自动对齐,因此将会报错。
不同维度,广播运算,默认在1轴。
Pandas入门小结

  • Series=索引+一维数据
  • DataFrame=行列索引+二维数据
  • 理解数据类型与索引的关系,操作索引即操作数据。
  • Pandas数据的操作:重新索引、数据删除、算术运算、比较运算。
  • 像对待单一数据一样对待Series和DataFrame对象。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud-Netflix学习笔记03——什么是Eureka

什么是Eureka Eureka&#xff1a;怎么读&#xff1f; Netflix 在设计Eureka 时&#xff0c;遵循的就是AP原则。 1、CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中 2、一致性&#xff08;Consistency&#xff09; 3、可用性&#xff08;Availability&#xff09; 4、…

详细实例说明+典型案例实现 对动态规划法进行全面分析 | C++

第三章 动态规划法 目录 ●第三章 动态规划法 ●前言 ●一、动态规划法是什么&#xff1f; 1.简要介绍 2.生活实例 ●二、动态规划法对斐波那契数列的优化 1.优化方法 2.优化核心代码片段 3.代码实现以及结果展示 ●三、动态规划法的典型案例——最短总距离 …

c语言文件操作(万字解析)

c语言文件操作一.文件的打开与关闭1.文件指针-FILE*2.文件的打开与关闭二.文件的顺序读写1.字符操作函数-fgetc和fputc2.字符串操作函数-fgets和fputs3.格式化函数-fprintf和fscanf4.二进制函数-fread和fwrite5.对比一组函数三.文件的随机读写1.fseek和ftell2.调整指针-rewind四…

Python NumPy 数组索引

前言NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算库。使用NumPy&#xff0c;就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数&#xff0c;涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 数组索引…

动态内容管理

这期我们来看动态内存管理的相关知识&#xff0c;话不多说&#xff0c;我们来看今天的正题 目录 1.为什么要有动态内存管理&#xff1f; 2.动态内存函数的介绍 2.1.malloc和free 2.2.calloc 2.3.realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开…

Pytorch DataLoader中的num_workers (选择最合适的num_workers值)

一、概念 num_workers是Dataloader的概念&#xff0c;默认值是0。是告诉DataLoader实例要使用多少个子进程进行数据加载(和CPU有关&#xff0c;和GPU无关) 如果num_worker设为0&#xff0c;意味着每一轮迭代时&#xff0c;dataloader不再有自主加载数据到RAM这一步骤&#xff0…

滑动列表中使用粒子特效层级问题

前言 前面几个月疯狂堆功能,现在开始疯狂加动效,每次一说到动效就脑壳痛,还不如让我写功能。这不,今天又遇到问题了。滑动列表中mask粒子特效问题遮挡。 情况1 步骤1:使用粒子特效的层级应该>当前ui层级。 例如:当前界面所在层级为2000,其上的粒子特效至少为2001。…

dp(八)买卖股票的最好时机 (一,二、三)

目录 买卖股票的最好时机(一)_牛客题霸_牛客网 买卖股票的最好时机(二)_牛客题霸_牛客网 买卖股票的最好时机(三)_牛客题霸_牛客网 假设你有一个数组prices&#xff0c;长度为n&#xff0c;其中prices[i]是股票在第i天的价格&#xff0c;请根据这个价格数组&#xff0c;返回买…

基于云的文档管理系统:DocuWare Cloud

云文档管理软件&#xff1a;DocuWare Cloud 一流的云文档管理软件和工作流自动化内容服务&#xff0c;适用于任何规模的团队和公司——在多租户云平台上交付。 DocuWare Cloud 可在订阅的基础上为不同规模的公司提供灵活的许可证。 每个订阅都涵盖全方位的服务&#xff0c;包…

dvwa中的爆破

环境&#xff1a;dvwa: 192.168.11.135 dvwa版本&#xff1a; Version 1.9 (Release date: 2015-09-19)kail机器&#xff1a;192.168.11.1561、Low级别代码&#xff1a;1、启动 burpsuite 开始抓包&#xff0c;然后点击 login&#xff0c;然后在 bp 里面就能看见抓包到的包。这…

Java集合常见面试题(二)

Collection 子接口之 List ArrayList 和 Vector 的区别? ArrayList 是 List 的主要实现类&#xff0c;底层使用 Object[]存储&#xff0c;适用于频繁的查找工作&#xff0c;线程不安全 &#xff1b;Vector 是 List 的古老实现类&#xff0c;底层使用Object[] 存储&#xff0…

谷粒学院复习

一、Mybatis Plus复习分布式系统唯一ID主键策略(面试)面试的时候就说知道有以下四种策略&#xff0c;分别介绍一下每一种&#xff0c;然后说一下项目中用的是雪花算法分类自动增长 AUTO INCREMENT就是自动增长&#xff0c;每次都会自动加一。缺点&#xff1a;如果在分库分表的场…

VUE: Vue3+TS的项目搭建及基础使用

简介 通过 Vue-cli4 创建的 Vue3TS 的项目&#xff0c;并进行一些基础使用的举例。 项目搭建 1. 进入命令提示符窗口 在要搭建项目的文件夹中&#xff0c;点击路径&#xff0c;输入CMD并按回车 2. 查看node版本、Vue-cli版本 2.1 node版本&#xff08;14.x以上&#xf…

基于域控的SSO单点登录

大家好&#xff0c;好久不见&#xff0c;今天老吕给大家来一篇偏冷门知识的文章。一、需求大型集团企业内部会有许多业务系统&#xff0c;工作人员也往往需要登录多个业务系统才能完成工作&#xff0c;这就可能会存在一些问题1、多套账号与密码需要记录或者记忆2、多次登录&…

14.live555mediaserver-setup请求与响应

live555工程代码路径 live555工程在我的gitee下&#xff08;doc下有思维导图、drawio图&#xff09;&#xff1a;https://gitee.com/lure_ai/live555/tree/master 学习demo live555mediaserver.cpp 学习线索和姿势 1.学习的线索和姿势 网络编程 流媒体的地基是网络编程&…

Git 的常用命令

Git 的常用命令 目录Git 的常用命令帮助初始化配置提交远程仓库管理版本控制删除分支管理查看文件提交、状态帮助 查看常用命令 git help查看某个命令的使用帮助 git help [命令]查看 git 使用指南&#xff08;这个命令会详细展示 git 的使用周期&#xff09; git help tut…

【BP靶场portswigger-客户端13】跨来源资源共享(CORS)-4个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

2022.12 青少年机器人技术等级考试理论综合试卷(三级)

2022年12月 青少年机器人技术等级考试理论综合试卷&#xff08;三级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 共 80 分) 1.舵机接到 Arduino UNO/Nano 主控板的 2 号引脚&#xff0c; 下列选项中&#xff0c; 实现舵机在 0 度…

4、字符串处理

目录 一、字符串的构造 二、字符串比较 三、字符串查找 四、字符串替换 五、字符串——数值转换 Matlab中的字符串函数有&#xff1a; 一、字符串的构造 字符串或字符串数组的构造可以通过直接给变量赋值来实现&#xff0c;具体表达式中字符串的内容需要写在单引号内。如…

ESP8266 ArduinoIDE 搭建web服务器与客户端开发

一、wifi 相关配置 1.1 无线终端 wifi 模式 此模式中&#xff0c;esp8266 会连接到指定 wifi 进行工作。 #include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库const char* ssid "home"; // 连接WiFi名&#xff08;此处使用home为示例&…