数据分析师的学习之路-pandas篇(6)

接上篇,画图告一段落,现在学习表格的各种操作。

3.8 表格操作

3.8.1 表的校验

表里有些列的数据是有一定的要求的,比如说下面这个表,Score分数列,要求成绩只能是0到100,那如果有出现错误的数据,就需要校验出来。
在这里插入图片描述
首先还是导入库,并且读入文件:

import pandas as pd
students = pd.read_excel("C:/tmp/1.xlsx")

校验还是可以利用dataframe的apply方法,可以传入一个函数进去进行校验,所以先写一个校验的函数:

#传入一行数据(Series),用断言判断成绩范围,不在的话就抛出异常并打印信息。
def score_validation(row):
	try:
		assert 0 <= row.Score <= 100
	except:
		print(f"#{row.ID} student {row.Name} has an invalid score {row.Score}")

然后就利用dataFrame的apply方法来校验每一行,这里有个基本概念,就是dataframe遍历时有两个轴的方向,一个是左右一行一行扫描,一个是上下一列一列的扫描,对应的参数是 axis,如果为0就是上下一列一列扫描,如果是1就是左右一行一行扫描。这里的校验函数写的逻辑是一行一行扫描,所以参数axis为1:

students.apply(score_validation, axis=1)

这样就会找出Score有错误的数据,并打印出来。

3.8.2 分列

要把一列分成两列,比如这个例子里,要把Full Name的列,分成First Name和 Last Name两列:
在这里插入图片描述在这里插入图片描述
除了把列分开,数据也要根据自己的格式来进行分离,比如这里名和姓都是用空格分开的。

首先依然导入库和读入文件:

import pandas as pd
employees = pd.read_excel("C:/tmp/1.xlsx", index_col='ID')

先准备一个中间结果

#这里dataFrame获得该列的Series并用string的分割方法来完成两列数据的分割
#split通过空格来分割,expand设为True,最后就只保留我们想要的两个list
df = employees["Full Name"].str.split(' ', expand=True)
#然后添加新的两列就是:
employees['First Name'] = df[0]
employees['Last Name'] = df[1]

3.8.3 统计分析

经常会遇到求一些基本的统计分析数据,比如总和、均值等,现在例子是学生的3次测试成绩:
在这里插入图片描述
首先依然导入库和读入文件:

import pandas as pd
students= pd.read_excel("C:/tmp/1.xlsx", index_col='ID')

现在需要计算Test这3列的数据,不要其他列,那就得先拿这个表的一个子集来继续操作:

#students['Test_1']这样是拿到一列数据,即Series,
#里面放个list,就是拿到多列数据,还是dataFrame
#所以这样的方式就拿到了一个子集temp
temp = students[['Test_1', 'Test_2', 'Test_3']]

然后,就是在这个子集表的上面进行各种数据统计

#这样调用,是按列累加总和,result最终是个Series,分别对应3列的总和的值
result = temp.sum()

而我们现在是想得到一个学生的3次测试成绩,得横着加,那么上上一节说过,左右横着一行一行扫描,得设轴axis为1,所以:

#加上axis参数并设为1,这样就是一行这3列的总和了
row_sum = temp.sum(axis=1)
#求这一行的平均值,就换个函数
row_mean = temp.mean(axis=1)
#以此类推,其他统计方法都可以调用具体的函数,插pandas文档都能找到,搜一下也行。

3.8.4 消除重复数据

这个场景也经常出现,比如这个数据里Name里最后有重复的名字,现在想去掉重复的行。
在这里插入图片描述
首先依然导入库和读入文件:

import pandas as pd
students= pd.read_excel("C:/tmp/1.xlsx", index_col='ID')

去重复,也有现成函数调用

#去掉Name列重复的行
students.drop_duplicates(subset='Name', inplace=True, keep='first')

如果要对多行去重,就在subset参数里给一个list就行。
keep参数意思是重复的数据,要保留第1次出现还是最后一次出现的,可以设first,或者last

如果只是想找到重复的数据,而不删除,那就换个方法:

dupe = students.dublicated(subset='Name')

此时dupe变量的值代表每行是不是有重复,有重复的行就是True,没有的行就是False,长这样,最后5行和前面有重复,就变成了True。

>>> students.duplicated()
0    False
1    False
2    False
... ...
19   True
20   True
21   True
22   True
23   True
dtype: bool

只是判断一下有没有重复数据,就调用这个

#any函数
print(dupe.any())

如果想过滤一下,只要重复的数据就是:

dupe = dupe[dupe == True] #可以简写为  dupe = dupe[dupe] ,但是读起来不好理解
#然后就可以定位到重复的数据
students.iloc[dupe.index]

3.8.5 旋转行列

想把一个表的行列旋转一下,行变列,列变行。
首先依然导入库和读入文件:

import pandas as pd
students= pd.read_excel("C:/tmp/1.xlsx", index_col='ID')

这里读的时候一定要设置一下index,不然会自动加一列index,导致旋转的时候多了一行。

#旋转就调用一个函数就可以了
table = students.transpose()

3.8.6 导入csv、tsv和txt文件

1、读csv文件
csv文件的读入pandas有函数可以直接用:

students1 = pd.read_csv("C:/tmp/1.csv", index_col='ID')

2、读tsv文件
tsv文件没有专门的函数,还是用csv的函数,只不过可以自定义数据分隔符就能读了,tsv文件的数据分隔符是制表符:

students2 = pd.read_csv("C:/tmp/2.tsv", sep='\t', index_col='ID')

3、读txt文件
txt文件还是用csv的函数,还是用自定义分隔符,一般分隔符用 | 字符:

students3 = pd.read_csv("C:/tmp/3.txt", sep='|', index_col='ID')

好,先学到这,后面继续学习其他操作

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

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

相关文章

opencv轮廓

寻找轮廓之前需使用阈值或者canny边缘检测 找到轮廓 contours, hierarchy cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) 绘制轮廓 第三个参数是轮廓的索引 cv.drawContours(img, contours, -1, (0,255,0), 3) 轮廓面积 area cv.contourArea(cnt) 轮…

很全面 影响无人机自动返航的因素总结

在无人机技术不断成熟的今天&#xff0c;自主返航技术成为保障飞行安全的一种重要工具。无人机在多种情况下能够智能判断&#xff0c;主动实施返航动作&#xff0c;为用户提供更加可靠的飞行保障。以下是一些常见的无人机自动返航场景&#xff0c;让我们深入了解这项技术背后的…

一键抠图2:C/C++实现人像抠图 (Portrait Matting)

一键抠图2&#xff1a;C/C实现人像抠图 (Portrait Matting) 目录 一键抠图2&#xff1a;C/C实现人像抠图 (Portrait Matting) 1. 前言 2. 抠图算法 3. 人像抠图算法MODNet &#xff08;1&#xff09;模型训练 &#xff08;2&#xff09;将Pytorch模型转换ONNX模型 &…

03、pytest初体验

官方实例 # content of test_sample.py def func(x):return x 1def test_ansewer():assert func(3) 5步骤解释 [100%]指的是所有测试用例的总体进度&#xff0c;完成后&#xff0c;pytest显示一个失败报告&#xff0c;因为func(3)没有返回5 注意&#xff1a;你可以使用ass…

MIT_线性代数笔记:第 12 讲 图、网络、关联矩阵

目录 图和网络 Graphs & Networks关联矩阵&#xff08;Incidence matrices&#xff09;矩阵的零空间矩阵列空间矩阵的左零空间矩阵的行空间 本讲讨论线性代数在物理系统中的应用。 图和网络 Graphs & Networks “图”就是“结点”和“边”的一个集合。 边线上的箭头代…

枚举以及枚举的应用简化if/else

枚举定义 public enum Week {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;//无参构造器&#xff0c;默认privateWeek(){System.out.println("hello");} }public class Test {public static void main(String[] args) {Week w Week.FRIDAY;} }…

网络程序设计

互相连接&#xff0c;发送信息 tcp和udp协议 tcp会有准备&#xff0c;udp不会准备。 8080端口&#xff1a;tomcat端口&#xff0c;java和web相连接 80端口&#xff1a;http 21端口&#xff1a;ftp 套接字 socket&#xff1a;提供给程序可以对外进行连接的接口 ip地址 特…

C#多线程开发之----List Task有返回值

C#中的List<T>是一个泛型集合类&#xff0c;可以用来存储任意类型的元素。在多线程环境下&#xff0c;可以使用Task<TResult>类来执行异步操作并返回结果。通过将List<T>与Task<TResult>结合使用&#xff0c;可以实现多线程处理带有返回值的操作&#…

系统运维安全之病毒自检及防护

一、前言 Linux勒索病毒&#xff08;Linux ransomware&#xff09;是一种最令人恶心的计算机恶意病毒&#xff0c;它以侵入Linux系统&#xff0c;捆绑文件并要求支付赎金才能释放文件为主要目的&#xff0c;破坏用户的数据&#xff0c;造成数据讹诈。Linux勒索病毒它们的存在已…

轻松入门性能测试:打造高效稳定的应用系统!

性能测试乍一听&#xff0c;好像是很高大上&#xff0c;不过也确实很高大上&#xff0c;一般的测试人员&#xff0c;没有经过专门的训练的话&#xff0c;可能都难以理解性能里面的一些术语。 本文是小马哥从教学和答疑的过程中总结出的一些关于性能测试的简单理解&#xff0c;…

网工学习10-IP地址

一、IP地址概念 IP地址是一个32位的二进制数&#xff0c;它由网络ID和主机ID两部份组成&#xff0c;用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段&#xff1b;主机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示&#xff0c;中间用…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异&#xff0c;在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家&#xff0c;其次为日本&#xff0c;中国紧随其后&#xff0c;由于中国人口基数大&#xff0c;其绝对患胃癌人数为全球第一&#xff0c;每年有100多万新诊断患者&#xff0c;其…

文件批量管理技巧:高效移动文件并创建文件夹,按数量分类的重要性

在日常生活和工作中&#xff0c;经常会遇到大量的文件要管理。这些文件可能存储在电脑的硬盘、外部存储设备或是云存储中。如何高效地管理这些文件&#xff0c;以便能够快速找到所需的资料&#xff0c;是一项非常重要的技能。本文讲解云炫文件管理器如何批量管理文件的技巧&…

【数据结构】链表OJ题(顺序表)(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

制造业需要MES与ERP的整合

MES与ERP整合 在当今的制造环境中&#xff0c;这不是 MES 与 ERP 的对比&#xff1b;MES 和 ERP 一起带来了两个系统都无法单独提供的操作清晰度。 ERP 专注于创建和管理工厂计划&#xff0c;包括生产、材料使用、交付和运输&#xff0c;以及收集相关业务的信息。另一方面&…

数据可视化工具选择:功能、易用性与安全性

作为一名数据可视化大屏设计师&#xff0c;我深知选择一款合适的数据可视化工具对于提高工作效率和呈现效果的重要性。下面&#xff0c;我将从真正对我们数据可视化大屏设计师有用的角度为大家介绍选择数据可视化工具的一些必要条件和要求。 1. 功能强大与灵活定制 首先&…

Python语言基础学习大纲(由某大模型生成)

自从上次经丙察察游了一次滇藏线&#xff0c;已有3个没写一篇了。今天利用由某大模型生成的上面这张思维导图&#xff0c;配合这个大模型生成的6000多字拼凑出一篇博文聊以交差。 Python语言概述 一、语言特点 1.语法简单明了 Python的语法简洁易懂&#xff0c;使得编写代码…

双列集合 Map常见的API Map遍历方式 HashMap LinkedHashMap treeMap

目录 双列集合双列集合的特点 双列集合体系结构Map常见的APIMap遍历方式Map的遍历方式一(键找值)遍历方式二键值对遍历方式三lambda表达式 HashMap练习1练习二LinkedHashMapTreeMapTreeMap练习1二三 双列集合 双列集合可以记录两个元素.一个称为键一个称为值.合称为键值对,又叫…

C语言-详解指针

目录 一.内存 1.内存的定义 2.内存的结构图 二.地址 1.什么是地址 2.什么是变量的地址 三.什么是指针 1.指针的定义 四.如何获取数据存储空间的地址 1.&运算符 五.指针变量 1.什么是指针变量&#xff08;一级指针变量&#xff09; 2.指针变量的定义 3…

LLM之Agent(四)| AgentGPT:一个在浏览器运行的Agent

AgentGPT是一个自主人工智能Agent平台&#xff0c;用户只需要为Agent指定一个名称和目标&#xff0c;就可以在浏览器中链接大型语言模型&#xff08;如GPT-4&#xff09;来创建和部署Agent平台。 PS&#xff1a;目前agentGPT仅支持chatgpt模型&#xff0c;暂时不支持本地llm模…