python数据处理(pandas)

# 新的数据格式,csv
  • 纯文本,使用某个字符集,比如都是ASCII、Unicode、EBCDIC或GB2312(简体中文环境)等;
  • 由记录组成(典型的是每行一条记录)
  • 每条记录被分隔符(英语:Delimiter)分隔为字段(英语:Field(computer science))(典型分隔符号有逗号、分号或制表符;有时分隔符可以包括可选的空格)
  • 每条记录都有同样的字段序列
import pandas as pd 
import numpy as np
abs_path = r'F:\Python\learn\python附件\pythonCsv\data.csv'
df = pd.read_csv(abs_path,encoding='gbk')
df.head(2)
序号姓名性别语文数学英语物理化学生物
01渠敬辉806030403060
12韩辉909575758085
type(df)
pandas.core.frame.DataFrame

DataFrame

# 列名
print(df.columns)
# 索引
print(df.index)
Index(['序号', '姓名', '性别', '语文', '数学', '英语', '物理', '化学', '生物'], dtype='object')
RangeIndex(start=0, stop=7, step=1)
df.loc[0]
序号      1
姓名    渠敬辉
性别      男
语文     80
数学     60
英语     30
物理     40
化学     30
生物     60
Name: 0, dtype: object
a = np.array(range(10))
a > 3
array([False, False, False, False,  True,  True,  True,  True,  True,True])
# 筛选数学成绩大于80
df[df.数学 > 80]
序号姓名性别语文数学英语物理化学生物
12韩辉909575758085
34石天洋909095807580
df[df.数学 < 80]
序号姓名性别语文数学英语物理化学生物
01渠敬辉806030403060
45张三606060606060
67王五707070707070
# 复杂筛选
df[(df.语文 > 80) & (df.数学 > 80) & (df.英语 > 80)]
序号姓名性别语文数学英语物理化学生物
34石天洋909095807580

排序

df.sort_values(['数学','语文','英语']).head()
序号姓名性别语文数学英语物理化学生物
45张三606060606060
01渠敬辉806030403060
67王五707070707070
56李四808080808080
23韩文晴958085608090

访问

# 按照索引去定位
df.loc[3]
序号      4
姓名    石天洋
性别      男
语文     90
数学     90
英语     95
物理     80
化学     75
生物     80
Name: 3, dtype: object

索引

scores = {'英语':[90,78,89],'数学':[64,78,45],'姓名':['wong','li','sun']
}
df = pd.DataFrame(scores,index=['one','two','three'])
df
英语数学姓名
one9064wong
two7878li
three8945sun
df.index
Index(['one', 'two', 'three'], dtype='object')
# 因为此时不存在数字索引,所以不能通过数字索引去访问
# df.loc[1]
df.loc['one']
英语      90
数学      64
姓名    wong
Name: one, dtype: object
# 实实在在的所谓的第几行
df.iloc[0]
英语      90
数学      64
姓名    wong
Name: one, dtype: object
# 合并了loc和iloc的功能,新版本下ix方法已被弃用
df.ix[0]
---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-22-413c174d3cd1> in <module>1 # 合并了loc和iloc的功能
----> 2 df.ix[0]G:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)5275 5276     def __setattr__(self, name: str, value) -> None:AttributeError: 'DataFrame' object has no attribute 'ix'
df.loc[:2]
序号姓名性别语文数学英语物理化学生物
01渠敬辉806030403060
12韩辉909575758085
23韩文晴958085608090
# 当索引为数字索引的时候,ix和loc是等价的,新版本下ix方法已被弃用
df.ix[:2]
---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-33-a97de2692f80> in <module>1 #当索引为数字索引的时候,ix和loc是等价的
----> 2 df.ix[:2]G:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)5275 5276     def __setattr__(self, name: str, value) -> None:AttributeError: 'DataFrame' object has no attribute 'ix'
# 访问某一行,是错误的
# df[0]# 访问多行数据是可以使用切片的
df[:2]
序号姓名性别语文数学英语物理化学生物
01渠敬辉806030403060
12韩辉909575758085
# dataframe中的数组
df.数学.values
array([60, 95, 80, 90, 60, 80, 70], dtype=int64)
# 简单的统计
df.数学.value_counts()
60    2
80    2
95    1
70    1
90    1
Name: 数学, dtype: int64
# 提取多列
new = df[['数学','语文']].head()
new
数学语文
06080
19590
28095
39090
46060
new * 2
数学语文
0120160
1190180
2160190
3180180
4120120

重点

def func(score):if score>=80:return '优秀'elif score>=70:return '良'elif score>=60:return '及格'else:return '不及格'passdf['数学分类'] = df.数学.map(func)
df.head()
序号姓名性别语文数学英语物理化学生物数学分类
01渠敬辉806030403060及格
12韩辉909575758085优秀
23韩文晴958085608090优秀
34石天洋909095807580优秀
45张三606060606060及格
# applymap对dataframe中所有的数据进行操作的一个函数,非常重要
def func(number):return number + 10
# 等价
func = lambda number : number + 10df.applymap(lambda x : str(x) + ' - ').head(2)
序号姓名性别语文数学英语物理化学生物数学分类
01 -渠敬辉 -男 -80 -60 -30 -40 -30 -60 -及格 -
12 -韩辉 -男 -90 -95 -75 -75 -80 -85 -优秀 -

匿名函数

# 列表推导式
[i+100 for i in range(10)]
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
def func(x):return x + 100
list(map(func,range(10)))
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
# 匿名函数的使用条件:
# 1.函数就一行
# 2.函数不经常使用
# 3.函数没有必要取名字
list(map(lambda x : x+100,range(10)))
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
# apply根据多列生成新的一个列的操作,用apply
df['new_score'] = df.apply(lambda x : x.数学 + x.语文, axis=1)
# 前几行
df.head(2)
# 最后几行
df.tail(2)
序号姓名性别语文数学英语物理化学生物数学分类new_score
56李四808080808080优秀160
67王五707070707070140

panda中的dataframe的操作,很大一部分跟numpy中的二位数组的操作是近似的

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

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

相关文章

ffmpeg 7.0 + vs2022 +windows编译

后面有总结&#xff1a; 安装msys2 打开 &#xff08;这一步非常重要不然就得指定vs的环境&#xff09; x64 Native Tools Command Prompt for VS 2022运行 在x64 Native Tools Command Prompt for VS 2022命令行中切换到msys2安装目录中 打开 msys2_shell.cmd运行 安装 pa…

GNU/Linux - 如何使用lsmod和modinfo命令

How to Use the lsmod and modinfo Commands in Linux Linux 内核是模块化的&#xff0c;这意味着可以根据需要添加和删除模块。这就造就了一个轻量级、安全和轻便的内核。它的灵活性让你可以添加和删除你需要的功能&#xff0c;使操作系统符合你的使用情况和偏好。 The Linux …

企业大文件传输之安全数据传输的重要性

企业数据安全性的维护直接关系到企业的市场竞争力乃至其生存的根基。数据的保护不仅涉及到保护企业的商业秘密&#xff0c;也关乎到客户隐私的保护&#xff0c;更触及到国家安全的敏感层面。因此&#xff0c;保障数据在传输过程中的安全&#xff0c;成为了每个企业和组织必须面…

Linux中的fork与进程地址空间

目录 前言 一、进程地址空间 二、fork的值返回 三、高清图链接 总结 前言 在博主的《进程状态解析》一文中&#xff0c;在讨论进程创建时&#xff0c;提到了一个系统调用接口fork&#xff0c;它在使用过程中表现出对于父子进程不一致的返回结果&#xff0c;而且似乎还具有…

python笔记(17)输入输出

一、标准输入与输出简介 Python通过内置的sys模块管理标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误&#xff08;stderr&#xff09;。但对大多数简单应用而言&#xff0c;直接使用内置函数就足够了。 二、输入&#xff1a;inpu…

ETL工具kettle(PDI)入门教程,Transform,Mysql->Mysql,Csv->Excel

什么是kettle&#xff0c;kettle的下载&#xff0c;安装和配置&#xff1a;ETL免费工具kettle(PDI)&#xff0c;安装和配置-CSDN博客 mysql安装配置&#xff1a;Linux Centos8 Mysql8.3.0安装_linux安装mysql8.3-CSDN博客 1 mysql -> mysql 1.1 mysql CREATE TABLE user_…

618值得入手的平价好物清单,看完再买不吃亏!

即将到来的618年中购物狂欢节&#xff0c;无疑是一年一度的购物盛宴。为了让大家的购物体验更加愉悦和充实&#xff0c;我特地为大家精选了一系列好物。如果你也打算在618尽情购物&#xff0c;那就赶紧收藏这份清单吧&#xff01; 一、舒适佩戴不伤耳——南卡骨传导耳机Runner…

C补充1—1章1.0—C程序语言设计(许宝文,李志)

二手书到了&#xff0c;好消息&#xff0c;前主人看的很认真&#xff0c;坏消息&#xff0c;只看到这页了 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊最后几题好难啊啊啊啊啊&#xff0c;再议 目录 1.1 入门 1.2 变量与算数表达式 练习1-3 //打印温度对照表 练习1-4 //摄氏-华氏温…

微软VC++基础插件集合最新版

随着C语言的不断演进&#xff0c;微软不断更新其Visual C&#xff08;简称VC&#xff09;工具集&#xff0c;以支持最新的C标准和开发实践。2024年&#xff0c;微软发布了VC基础插件集合的最新版&#xff0c;为C开发者带来了一系列新功能和改进。以下是关于这个最新版插件集合的…

医疗行业如何提升Windows操作系统登录的安全性

医疗行业使用账号和密码登录Windows系统时&#xff0c;可能会遇到一些痛点&#xff0c;这些痛点可能会影响工作效率、数据安全和用户体验。以下是一些主要的痛点&#xff1a; 1. 密码管理复杂性&#xff1a;医疗行业通常涉及大量的敏感数据和隐私信息&#xff0c;因此密码策略…

为什么 Cloudflare 是 2024 年 Vercel 的最佳替代品?生态系统和价格比较

本文探讨了 Vercel 的功能&#xff0c;并与 Cloudflare 生态系统中的类似产品进行了比较。从托管到存储&#xff0c;我们将看到为什么 Cloudflare 可以在 2024 年成为 Vercel 的最佳替代品。 文章目录 介绍什么是 Cloudflare&#xff1f;Cloudflare vs Vercel&#xff1a;托管和…

实战 | 18行代码轻松实现人脸实时检测【附完整代码与源码详解】Opencv、人脸检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

BS架构 数据权限--字段级权限 设计与实现

一、需求场景 1. 销售发货场景 销售出库单上 有 商品名称、发货数量、单价、总金额 等信息。 销售人员 关注 上述所有信息&#xff0c;但 仓管人员 不需要知道 单价、总金额 信息。 2. 配方、工艺保密 场景 配方研发人员 掌握核心配方&#xff0c; 但 交给车间打样、生产时…

深入探索Dockerfile:构建容器化应用的秘密武器

想象一下&#xff0c;您正在开发一款创新的Web应用&#xff0c;您希望能够简化部署流程、确保环境一致性&#xff0c;并且提高开发团队的效率。在这个过程中&#xff0c;Dockerfile 可能是您最强大的工具之一。Dockerfile 是一个简单而又强大的文本文件&#xff0c;它包含了构建…

锚索测力计在岩土工程中的应用

随着现代工程建设的快速发展&#xff0c;岩土工程安全问题日益受到人们的关注。岩土工程中的锚索结构&#xff0c;作为保证工程稳定和安全的关键部分&#xff0c;其性能监测和评估显得尤为重要。近年来&#xff0c;锚索测力计作为一种先进的监测工具&#xff0c;在岩土工程安全…

微信小程序跳转微信管理平台配置的客服及意见页面

<button open-type"contact" bindcontact"handleContact" session-from"sessionFrom">帮助与客服</button> 不需要路径 在当前小程序中会自动进入 open-type"contact" 其他参数不用修改 只修改这个参数对应表单组件 /…

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建API密钥调用文档调用说明API服务域名通信协议字符编码公…

Spring AOP浅谈

什么是AOP&#xff1f; AOP是Aspect-Oriented Programming的缩写&#xff0c;是一种面向切面的编程方法。 在AOP中&#xff0c;一个切面是一组可以独立于其他代码执行的功能&#xff0c;如日志记录、安全性检查、事务处理等。这些功能通常被称为"通知"&#xff0c;并…

C++发票识别API 、发票录入

“十二金”工程是我国政府在信息化建设中的重要一步&#xff0c;“金税工程”总称为中国税收管理信息系统&#xff08;CTAIS&#xff09;&#xff0c;是我国电子政务的核心系统之一,是财政的重要环节。十二金”是面向政府办公业务建立的十二个重点信息应用系统&#xff0c;按“…

IP报文在设备间传递的封装过程

IP报文传递过程 1、PC1访问PC2报文传递过程1.1、PC1准备数据请求报文封装1.2、PC1准备ARP请求报文1.3、PC2准备ARP响应报文1.4、PC1完成数据请求报文封装 2、PC1访问PC3报文传递过程2.1、PC1准备数据请求报文封装2.2、PC1准备获取网关MAC地址的ARP请求报文2.3、网关准备ARP响应…