NumpyPandas:Pandas库(25%-50%)

目录

前言

一、列操作

1.修改变量列

2.筛选变量列

3.删除变量列

4.添加变量列

二、数据类型的转换

1.查看数据类型

2.将 ok的int类型转换成float类型

3.将ar的float类型转换成int类型

三、建立索引

1.建立DataFrame时建立索引

2.在读入数据时建立索引

3.指定某列或者多列为索引列

4.将索引还原变量列

四、引用和修改索引

1.引用索引

2.修改索引名

3.修改索引名

4.更新索引

五、Series的索引和切片

1.索引

2.切片

3.loc 和 iloc

六、DataFrame的索引和切片

1.选择列

2.选择行

3.获取满足条件的行

4.isin()选择

5.query()

总结


前言

        前一篇讲了Pandas库的安装和两种对象的创建以及一些基础方法:

Numpy&Pandas:pandas库的安装,Pandas(0-25%)-CSDN博客

今天接着来讲Pandas库后续内容(25%-50%)

 

一、列操作

  • citys

1.修改变量列

  • columns修改
# 修改变量列
citys.columns = ['ar','pp']    
# citys.columns
citys          # 直接改变原数据

输出:

 

  • rename修改
city = citys.rename(columns = {'ar':'area','pp':'population'},inplace = False)
citys    # inplace = Fasle 则原数据列名不变    = True 则原数据列名改变
# citys.columns
city    # 接收之后的列名改变

输出:注意inplace参数的使用

 

2.筛选变量列

  • 取一列和取多列
# 筛选变量列
print(citys.ar)          # 取一列
print(citys['ar'])
citys[['ar','pp']]       # 取多列 内部用列表

输出:

 

3.删除变量列

  • 先新增一列,不是说删除变量列必须先新增,是这里的数据框列数太少了,新增后看着更直观
citys['aaa'] = citys['ar'].rank(ascending=False)  
citys

输出:

 

  • 删除变量列
# 删除变量列
citys.drop(columns = ['aaa'])        # 删除单列
citys.drop(columns = ['aaa','ar'])   # 删除多列   输出了即原数组没有被改变

输出:一旦代码运行之后输出了,就说明元数据并没有被更改

 

4.添加变量列

  • 根据新数据添加和根据原数据添加
# 添加变量列
citys['pp_rank'] = pd.Series([1,2,3,'NaN'],['beijing','shanghai','guangzhou','tianjin'])
# 根据新数据添加
citys['ok'] = pd.Series(np.arange(4),index = ['beijing','shanghai','guangzhou','tianjin']) 
# ok列原索引是 0 1 2 3 与citys索引不符 所以必须得加上index 如果没加的话ok列全为NaN
# pp_rank 列也是如此citys['sum'] = citys['ar']+citys['pp']   # 根据原数据添加  NaN跟任何数字进行算术操作 结果通常都是NaN
citys

输出:

 

二、数据类型的转换

1.查看数据类型

# 查看数据类型
citys.dtypes

输出:会输出每一列的数据类型,object可以看作str

 

2.将 ok的int类型转换成float类型

# 将 ok的int类型转换成float类型
citys['ok'] = citys['ok'].astype('float')  # 用原列将修改后的列接收 不然原列不会更改
citys.dtypes

输出:跟上面的结果进行对比,会发现ok的数据类型被改为了float

 

3.将ar的float类型转换成int类型

# 将ar的float类型转换成int类型
citys['ar']=citys['ar'].astype('int',errors = 'ignore')  # errors='raise'转换出错时抛出错误,'ignore'忽略
citys.dtypes  # 因为ar列里有NaN 所以未转换成功

输出:因为ar列里有NaN,所以没有转换成功

 

三、建立索引

1.建立DataFrame时建立索引

# 建立DataFrame时建立索引  以字典的形式给定列名和每行的值  每行的值数量须一致
df = pd.DataFrame( {'varl' : 1.0, ' var2' :[1,2,3,4], 'var3' : ['test', 'python','test','hello'] , 'var4' : 'cons'} , index =[1,2,3,4])
df

输出:以字典的形式给定列名和每行的值  每行的值数量须一致

 

2.在读入数据时建立索引

# 在读入数据时建立索引 index_col= 指定哪一列或者多列当做索引
df_stu = pd.read_csv('./students.csv',header=None,names=['id','name','age','gender','clazz'],index_col=['id','name'])print(df_stu)
# df_stu['id']  # id变成行索引 不能当做列名使用 会报错
df_stu['age']

输出:

输出单列时:因为id name 都被用来当做行索引了

 

3.指定某列或者多列为索引列

# 指定某列或者多列为索引列
stu = pd.read_csv('./students.csv',header = None).set_index([0,1])  
stu

输出:默认的列名中0 1 被指定为索引列

 

4.将索引还原变量列

# 将索引还原变量列 
pp = stu.reset_index(drop = True)    # drop=True 会将原索引直接删除 
print(pp)
stu.reset_index()  # 将索引还原变量列  以默认值作为行索引

输出:drop=True 将原索引的id和name直接删除

输出:reset_index()   将索引还原变量列  以默认值作为行索引

 

四、引用和修改索引

  • citys:

1.引用索引

# 引用索引
citys.index

输出:

Index(['beijing', 'guangzhou', 'shanghai', 'tianjin'], dtype='object')

 

2.修改索引名

# 修改索引名
# 本质上和变量列名的修改方式相同
citys.index.name = 'citys' # 将这个df数据的索引命名为citys
citys

输出:

 

3.修改索引值

# 修改索引值
# 这里的修改本质上是全部替换
citys.index = ['bj','gz','sh','tj']
citys

输出:

 

4.更新索引

可以自定义索引的排列顺序

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=['a', 'b', 'c'])
print(df)# 使用 reindex 重新排列索引
new_index = ['c', 'b', 'a', 'd']
df_reindexed = df.reindex(new_index)print(df_reindexed)

输出:可以看到,前后数据框的行索引名改变了。同时还新增了一行,但是新增元数据框没有的索引名,会用NaN进行填充。

 

五、Series的索引和切片

  • 建立一个Series对象
# Series的索引和切片
data=pd.Series([4,3,25,2,3],index=list('abcde'))
data

输出:

1.索引

# 索引
print(data[0])    # 根据索引值获取     
print(data[-1])
print(data.c)
data['a']         # 根据索引名称获取

输出:

 

2.切片

# 切片
print(data['a':'b'])
print(data[0:2])
print(data[::-1])
print(data[data>3])   # 布尔取值 根据内部条件判断是True False 然后打印True

输出:

 

3.loc 和 iloc

# loc 和 iloc
data=pd.Series([5,3,2,5,9],index=[1,2,3,4,5])
print(data)
print(data.loc[1])            # 通过行的名称获取    名称索引
print(data.iloc[1])           # 通过行的索引值获取  即位置索引

输出:loc通过行的名称获取值 ,iloc通过行的位置获取值

 

六、DataFrame的索引和切片

  • citys

1.选择列

# 选择列
print(citys['ar'])           # 获取一列
print(citys[['pp','aaa']])   # 获取多列
citys

输出:

 

2.选择行

  • 取出单行
# 按行索引选择
print(citys.loc['bj'],'\n')   # 按行名称索引
print(citys.iloc[0],'\n')     # 按行位置索引  

输出:loc和iloc的用法和Series对象一致

  • 取出一列的所有行
print(citys.loc[:,'ar'],'\n')      # 取出指定名称的列的所有行 
print(citys.iloc[:,0])             # 取出指定位置的所有行

输出:

  • 取出指定行,指定列
# 注意前后类型的统一   名称行索引对应名称列索引    位置行索引对应位置列索引
print(citys.loc[['bj','tj'],['ar','pp']])  # 获取指定名称的多行的指定多列  
print(citys.iloc[[0,1,2],[0,1,2]])         # 获取指定位置的多行的指定多列

输出:

 

3.获取满足条件的行

# pandas里的与或非分别用  & | ~ 表示
print(citys[citys['ar']>100])          # 单条件布尔取值
citys[(citys['ar']>100) & (citys['pp']>1500)]   # 多条件布尔取值

输出:pandas里的与或非分别用  & | ~ 表示

 

4.isin()选择

data = {'var1': [1, 1, 1, 1],'var2': [1.0, 1.0, 1.0, 1.0],'var3': [1, 2, 3, 4],'var4': ['test', 'python', 'test', 'hello'],
}df = pd.DataFrame(data)
dfprint(df[ df.var4.isin(['test','hello'])],'\n')      # 取出含有相应字符串的行
result = df[df['var3'].isin([2, 3, 4])]      # 取出var3列含有2 3 4 的行
print(result)

输出:

 

5.query()

# query()的使用
data = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': [9, 10, 11, 12]}
df = pd.DataFrame(data)
df.index = ['val1', 'val2', 'val3', 'val4']
df

  • 单个条件
result = df.query('A > 2')  # 取出 'A'列中值大于2的行
result

输出:

  • 使用@引入变量
a = 2
result = df.query('A > @a')   # 使用@引入变量
result

输出:

  • 使用多个判断条件
result = df.query('A > 2 and B < 8')   # 使用多个判断条件
result

输出:

 

总结

        以上就是今天的全部内容,大概占pandas库的四分之一,下一篇将会把剩下的全部更新完。

pandas库的内容很多,要多多练习才能熟练掌握。

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

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

相关文章

virtualbox ubuntu扩充磁盘大小

首先在虚拟存储管理里面修改磁盘大小 然后安装gparted sudo gparted 打开管理工具 选中要调整的区域右键选择调整区域大小 拖动上述位置就可以实现扩容。完成后点击应用 然后重启虚拟机即可。

基于深度学习技术及强大的专家团队,针对多个工业垂类场景进行算法优化的智慧城管开源了。

智慧城管视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 基于深度学习技…

微服务的入门

带着问题进行学习&#xff1a; 1. 对服务进行拆分后&#xff0c;物理上是隔离的&#xff0c;数据上也是隔离的&#xff0c;如何进行不同服务之间进行访问呢&#xff1f; 2.前端是怎么样向后端发送请求的&#xff1f; 通过http请求&#xff0c;通过url&#xff0c;请求的…

wireshark--流量分析利器

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

传输层(port)UDP/TCP——解决怎么发,发多少,出错了怎么办

**传输层&#xff1a;**负责数据能够从发送端传输接收端. 传输层所封装的报头里一定有&#xff1a;源端口号和目的端口号的。 **端口号&#xff1a;**可以标识一台主机中的唯一一个进程&#xff08;运用程序&#xff09;&#xff0c;这样当数据传输到传输层的时候就可以通过端…

LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning)

要掌握LangChain开发框架并学会对大型预训练模型进行微调&#xff08;fine-tuning&#xff09;&#xff0c;你需要理解整个过程从数据准备到最终部署的各个环节。下面是这一流程的一个概览&#xff0c;并提供了一些关键步骤和技术点&#xff1a; 1. LangChain开发框架简介 La…

Maven实战(一)- Maven安装与配置

Maven实战&#xff08;一&#xff09;- Maven安装与配置 文章目录 Maven实战&#xff08;一&#xff09;- Maven安装与配置1.下载安装包2.配置环境变量。3.安装目录分析4.设置HTTP代理5.镜像 前言&#xff1a; ​ 最近博主看完了《Maven实战》&#xff08;许晓斌著&#xff09;…

回调函数地狱及其解决方法——Promise链式调用以及async函数和await

一、什么是回调函数地狱&#xff1f; > 在回调函数一直向下嵌套回调函数&#xff0c;形成回调函数地狱 二、回调函数地狱问题&#xff1f; > 可读性差 > 异常捕获困难 > 耦合性严重 <!DOCTYPE html> <html lang"en"><head>&…

大数据时代,区块链是如何助力数据开放共享的?

在大数据时代&#xff0c;区块链技术以其独特的优势&#xff0c;为数据开放共享提供了强有力的支持。以下是区块链助力数据开放共享的几个主要方面&#xff1a; 1. 增强数据安全性与隐私保护 加密安全&#xff1a;区块链技术采用先进的加密算法&#xff0c;如国密非对称加密技…

【高中数学/指数函数/单调性】写出函数f(x)=4^x-2^x+2的单调区间 (陈永明老师您错了!)

【问题】 写出函数f(x)4^x-2^x2的单调区间 【问题来源】 《陈永明讲评数学题-高中习题归类研讨》第20页 例2&#xff0c;该书由上海科技教育出版社出版&#xff0c;是2022年1月第一版。 【陈永明老师的解答】 【用Canvas绘制的实际图线】 我有一个习惯&#xff0c;就是在理…

【优秀python算法设计】基于Python网络爬虫的今日头条新闻数据分析与热度预测模型构建的设计与实现

1 绪论 1.1 背景与意义 随着互联网的快速发展和移动互联技术的普及&#xff0c;作为新兴的资讯平台&#xff0c;今日头条成为了用户获取新闻资讯、时事热点和个性化推荐的重要渠道。大量用户在今日头条上浏览、阅读并产生热度&#xff0c;使得今日头条成为了观察舆论热点和分…

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件&#xff0c;我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间&#xff0c;还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而&#xff0c;当我们需要通过邮件发送或上传大文件时&a…

时间序列对于LLM来说并没有什么不同

基础模型推动了计算语言学和计算机视觉领域的最新进展&#xff0c;并在人工智能领域取得了巨大成功。成功的基础模型的关键思想包括&#xff1a; 海量数据&#xff1a;庞大而多样的训练数据涵盖了广泛的分布&#xff0c;使模型能够近似任何潜在的测试分布。 可转移性&#xff…

Ubuntu网络连接图标消失了,没网!!!

文章目录 前言Step1&#xff1a;停止网络管理服务Step2&#xff1a;删除网络管理状态文件Step3&#xff1a;打开网络管理 前言 本次记录的事&#xff0c;有一天心血来潮想烧录一下开发板&#xff0c;却发现自己的Ubuntu系统的网络连接图标消失了&#xff0c;也没网了&#xff…

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号5

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;以20道题为一组&#xff0c;题库目录如下&#xff0c;读者可以按需跳转。如果对您的阅…

数据结构——单链表OJ题(上)

目录 一、移除链表元素 1.思路 2.注意 3.解题 二、反转链表 思路1&#xff1a;三指针翻转法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 思路2&#xff1a;头插法 &#xff08;1&#xff09;注意 &#xff08;2&#xff09;解题 三、链表的中间结…

AWS 中国区同账号0etl integration配置步骤

中国区的AWS支持0etl integration已经一段时间了&#xff0c;目前北京区和宁夏区均支持。中文翻译为零ETL集成。 当前支持的引擎是Aurora MySQL数据托管式导出到Redshift. Global区域支持Aurora PostgreSQL. 中国区后续也会陆续出现此功能的。 功能介绍文档&#xff1a; 【1…