用php做的网站有/seo收费标准
文章目录
- Pandas
- 变量类型的转换
- 查看各列数据类型
- 改变数据类型
- 重置索引
- 删除行
- 索引和切片
- series
- DataFrame
- 取列
- 按行列索引选择
- loc与iloc获取
- isin()选择
- query()的使用
- 排序
- 用索引排序
- 使用变量值排序
- 修改替换变量值
- 对应数值的替换
- 数据分组
- 基于拆分进行筛选
- 分组汇总
- 引用自定义函数
- 处理缺失值
- 认识缺失值
- 缺失值查看
- 获取所有缺失值
- 填充缺失值
- 数据查重
- 标识出重复的行
- 直接删除重复的行
- 总结
Pandas
Pandas 是 Python 中一个非常强大的数据处理库,它提供了快速、灵活和表达式丰富的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。Pandas 非常适合于数据清洗和准备阶段,以便进行进一步的分析和建模。
这篇我们接着来介绍Pandas方法:
变量类型的转换
Pandas支持的数据类型:
float、int、string、bool、datetime64[nsr]、datetime64[nsr,tz]、timedelta[ns]、category以及object。
查看各列数据类型
#查看各列数据类型book_df.dtypes
----------------------
ID int64
name object
age int64
gender object
clazz object
dtype: object
改变数据类型
格式:
df.astype(dtype :指定希望转换的数据类型,可以使用 numpy 或者 python 中的数据类型: int/float/bool/strcopy = True :是否生成新的副本,而不是替换原数据框errors = 'raise' : 转换出错时是否抛出错误,raise/ ignore )
# 改变数据类型book_df['age'].astype("float")
----------------------------------
0 22.0
1 24.0
2 22.0
3 24.0
4 22.0...
995 24.0
996 21.0
997 22.0
998 23.0
999 23.0
Name: age, Length: 1000, dtype: float64
重置索引
#重置索引--------->reset_indexa_pd = pd.DataFrame(np.random.randint(0,10,(3,2)),columns=list('ab'),index=list('efg'))
a_pd.reset_index(drop=True) #索引从0开始重置
--------------a b
0 2 3
1 4 0
2 1 9
删除行
# 删除行new_a_pd.drop(1,inplace=True) #删除第一行
new_a_pd
---------------a b
0 5 3
2 6 0
索引和切片
series
索引:
data=pd.Series([4,3,25,2,3],index=list('abcde'))
data
--------
a 4
b 3
c 25
d 2
e 3
dtype: int64
=============================
data['a'] #根据key获取
-------------------
4
==========================
data[1] #索引获取
--------------
3
===========================
data[-1]
----------------
3
切片:
#切片
data['a':'d']
---------------
a 4
b 3
c 25
d 2
dtype: int64
=============================
data[2:4] #索引切片
---------------------
c 25
d 2
dtype: int64
===========================
data[-3:-1]
----------------------
c 25
d 2
dtype: int64
=============================
data[data>3] #获取满足条件的所有行
--------------------
a 4
c 25
dtype: int64
如果索引与行名相同都是1,这时候就不知道是按照哪个来获取,所以获取时候使用loc、iloc:
loc函数:通过行索引 “Index” 中的具体值来取行数据及根据普通索引获取。
iloc函数:通过行号来取行数据,及根据位置索引获取。
data=pd.Series([5,3,2,5,9],index=[1,2,3,4,5])data.loc[1] #输入名称
----------------
5
====================
data.iloc[1] #输入位置
-------------
3
DataFrame
取列
当想要获取 df 中某列数据时,只需要在 df 后面的方括号中指明要选择的列即可。如果是一列,则只需要传入一个列名;如果是同时选择多列,则传入多个列名即可(注意:多个列名 用一个 list 存放)。
#获取一列
df[col]
#获取多列
df[[col1 , col2]] #输入列名
除了传入具体的列名,我们可以传入具体列的位置,即第几行,对数据进行选取,通过传入位置来获取数据时需要用到 iloc 方法。
df.iloc[行位置,[0,2]]
按行列索引选择
DataFrame对象按照行列检索获取,可以使用loc和iloc函数,方括号中逗号之前的部分表示要获取的行的索引,如果输入一个冒号,或不输入任何数值表示获取所有的行或列,逗号之后方括号表示要获取的列的索引。
1 df.loc[普通行索引,普通列索引]
2 df.iloc[位置行索引,位置列索引]
loc与iloc获取
import numpy as np
import pandas as pddata=pd.DataFrame(np.arange(12).reshape(3,4),
index=list('abc'),columns=list('ABCD'))#获取行为'b'的行
data.loc['b']#使用iloc获取,行为'b'的行,行号为1
data.iloc[1]
isin()选择
df.isin(values) 返回结果为相应的位置是否匹配给出的 values
values 为序列:对应每个具体值
values 为字典:对应各个变量名称
values 为数据框:同时对应数值和变量名称
1 df.col.isin([1,3,5])
2 df[ df.col.isin([1,3,5])]
3 df[ df.col.isin(['val1','val2'])]
4 df[ df.index.isin(['val1','val2'])]
query()的使用
使用boolean值表达式进行筛选
df.query(
expr:语句表达式
inplace=False;是否直接替换原数据框
)
可以使用前缀“@”引用环境变量,等号为==,而不是=。
df.query("col>10 and col<90 and col1=val")
======================
limit = 5
df.query("col<=@limit & col==val")
df.query("col<=@limit & col!=val")
排序
用索引排序
df.sort_index(
level :(多重索引时)指定用于排序的级别顺序号/名称18
ascending = True :是否为升序排列,多列时以表形式提供
inplace = False :
na_position = 'last‘ :缺失值的排列顺序 ( first/last)
)
df = pd.read_excel("stu_data.xlsx",index_col=["学号”,”性别”]) df.set_index( ['学号','性别'], inplace = True )# 通过索引进行排序
df.sort_index()
df.sort_index(ascending=False)
df.sort_index(ascending = [True,False])#设置哪个索引进行排序
df.sort_index(level="支出")
df.sort_index(level= ["支出","体重"])
使用变量值排序
df.sort_values(
by :指定用于排序的变量名,多列时以列表形式提供
ascending = True :是否为升序排列
inplace = False :
na_position = 'last‘ :缺失值的排列顺序,( first/last)
)
# 根据值进行排序
df.sort_values(by='身高')
修改替换变量值
本质上是如何直接指定单元格的问题,只要能准确定位单元地址,就能够做到准确替换。
# 判断哪一行是我们要的数据
df.体重[1] = 78
df['体重'][1] = 68
df.loc[1,'体重'] = 78
df.开设.isin(['不清楚'])
df.开设[df.开设.isin(['不清楚'])] = '可以'
对应数值的替换
df.replace(
to_replace = None :将被替换的原数值,所有严格匹配的数值将被用 value 替换,可以
str/regex/list/dict/Series/numeric/None
value = None :希望填充的新数值
inplace = False
)
df.开设.replace('可以','不清楚',inplace = True)df.性别.replace(['女','男'],[0,1],inplace =True)df.性别.replace({0:'女',1:'男'},inplace =True)
数据分组
df.groupby(
by :用于分组的变量名/函数
level = None :相应的轴存在多重索引时,指定用于分组的级别
as_index = True :在结果中将组标签作为索引
sort = True :结果是否按照分组关键字逬行排序
)#生成的是分组索引标记,而不是新的 df
dfg = df.groupby ('开设')#查看dfg里面的数据
dfg.groups#查看具体描述
dfg.describe( )#按多列分组
dfg2 = df.groupby(['性别','开设'])dfg2.mean ()
基于拆分进行筛选
筛选出其中一组
dfgroup.get_group()
dfg.get_group ('不必要').mean ()
dfg.get_group ('不必要').std ()
筛选出所需的列
该操作也适用于希望对不同的变量列进行不同操作时
dfg['身高'].max()
分组汇总
在使用 groupby 完成数据分组后,就可以按照需求进行分组信息汇总,此时可以使用其它专门的汇总命令,如 agg 来完成汇总操作。
使用 agg 函数进行汇总
df.aggregate( )
名称可以直接简写为 agg,可以用 axis 指定汇总维度,可以直接使用的汇总函数。
dfg.agg( 'count')dfg.agg('median')dfg.agg(['mean', 'median'])dfg.agg(['mean', 'median'])#引用非内置函数
import numpy as np
df2.身高.agg (np. sum)dfg.身高.agg (np. sum)
引用自定义函数
def mynum(x:int) ->int:return x.min()df2.身高.agg (mymean)
dfg.agg(mymean)
处理缺失值
认识缺失值
系统默认的缺失值 None 和 np. nan。
data=pd.Series([3,4,np.nan,1,5,None])
df=pd.DataFrame([[1,2,None],[4,np.nan,6],[5,6,7]])
缺失值查看
直接调用info()方法就会返回每一列的缺失情况。
df=pd.DataFrame([[1,2,np.nan],[4,np.nan,6],[5,6,7]])
df.info()
获取所有缺失值
Pandas中缺失值用NaN表示,从用info()方法的结果来看,索引1这一列是1 2 non-null float64,表示这一列有2个非空值,而应该是3个非空值,说明这一列有1个空值。还可以用isnull()方法来判断哪个值是缺失值,如果是缺失值则返回True,如果不是缺失值返回False。df.isna(): 检查相应的数据是否为缺失值同 df.isnull().
df.notna()等同于notnull()
data=pd.Series([3,4,np.nan,1,5,None])print('isnull()方法判断是否是缺值:')print(data.isnull())
print(data.isna())
print('获取缺值:')
print(data[data.isnull()])
print('获取非空值')
print(data[data.notnull()])
填充缺失值
调用fillna()方法对数据表中的所有缺失值进行填充,在fillna()方法中输入要填充的值。还可以通过method参数使用前一个数和后一个数来进行填充。
df.fillna(value :用于填充缺失值的数值,也可以提供dict/Series/DataFrame 以进—步指明哪些索引/列会被替换不能使用 listmethod = None :有索引时具体的填充方法,向前填充,向后填充等limit = None :指定了 method 后设定具体的最大填充步长,此步长不能填充axis : index (0), columns (1)inplace = False
)
Series对象缺失值填充:
data=pd.Series([3,4,np.nan,1,5,None])print('以0进行填充:')
print(data.fillna(0))
print('以前一个数进行填充:')
print(data.fillna(method='ffill'))
print('以后一个数进行填充:')
print(data.fillna(method='bfill'))
print('先按前一个,再按后一个')
print(data.fillna(method='bfill').fillna(meth od='ffill'))
DataFrame对象缺失值填充:
df=pd.DataFrame([[1,2,np.nan],[4,np.nan,6],[5,6,7]])print('使用数值0来填充:')
print(df.fillna(0))
print('使用行的前一个数来填充:')
print(df.fillna(method='ffill'))
print('使用列的后一个数来填充:')
print(df.fillna(method='bfill' ,axis=1))
列的平均值来填充:
df=pd.DataFrame([[1,2,np.nan],[4,np.nan,6],[5,6,7]])for i in df.columns:df[i]=df[i].fillna(np.nanmean(df[i]))
df
数据查重
标识出重复的行
标识出重复行的意义在于进一步检査重复原因,以便将可能的错误数据加以修改:
df['dup' ] = df.duplicated( ['课程','开设'])
利用索引进行重复行标识df.index.duplicated()
df2 = df.set_index ( ['课程','开设'] )
df2.index.duplicated ()
直接删除重复的行
drop_duplicates (subset=“ ”按照指定的行逬行去重keep='first' 、 'last' 、 False 是否直接删除有重复的所有记录)
df. drop_duplicates ( ['课程', '开设' ] )
df. drop_duplicates ( ['课程', '开设' ] , keep = False )
利用査重标识结果直接删除:
#df[~df.duplicated( )]df[~df . duplicated ( ['课程', '开设' ] )]
总结
本篇介绍了,pandas中常用的一些数据处理方法,结合上一篇,常用方法就介绍完了哦,务必好好整理!
相关文章:

Python --Pandas库基础方法(2)
文章目录 Pandas 变量类型的转换查看各列数据类型改变数据类型 重置索引删除行索引和切片seriesDataFrame取列按行列索引选择loc与iloc获取 isin()选择query()的使用排序用索引排序使用变量值排序 修改替换变量值对应数值的替换 数据分组基于拆分进行筛选 分组汇总引用自定义函…...

《Programming from the Ground Up》阅读笔记:p75-p87
《Programming from the Ground Up》学习第4天,p75-p87总结,总计13页。 一、技术总结 1.persistent data p75, Data which is stored in files is called persistent data, because it persists in files that remain on disk even when the program …...

Python面试整理-常用标准库
Python的标准库包含了大量的模块和包,支持各种编程任务,从文件处理、数据序列化,到网络编程等。这些模块预安装在Python中,无需额外安装就可以使用。以下是一些非常有用且常用的标准库模块: 1. os 用于与操作系统进行交互,包括文件和目录管理操作。 import os # 获取当前…...

halcon_C#联合halcon打开摄像头
1. 创建halcon项目 -> 2.测试连接 -> 3. 在halcon中打开摄像头成功 -> 4. 插入代码 -> 5. 导出为.cs文件 6. 创建VS项目 -> 7.将action部分代码嵌入winform -> 8. 编写代码 -> // 导入HalconDotNet命名空间,这是用于Halcon图像处理的…...

无标题栏窗口通过消息模拟拖动窗口时,无法拖动的一个原因
在使用DUI库或者web控件来做窗口和UI时,常常遇到一个问题:整个窗口如果设置了CAPTION区域,那么在CAPTION区域中,web页面的内容无法正常响应鼠标事件,如果不设置CAPTION区域,那么对于窗口的拖动又有影响。在…...

每天一个数据分析题(四百五十四)- 调研问卷
选择题是设计市场调查问卷时常用的题目类型,关于多选题和单选题的优缺点,以下说法不正确的是? A. 多选题相比单选题提供的信息量大。 B. 单选题提供的信息量相对较少,但比较便于后期编码和统计分析。 C. 单选题和多选题可以同时…...

红酒与家居:打造优雅生活空间
在繁忙的都市生活中,我们渴望拥有一处宁静而优雅的家居空间,那里不仅是我们休憩的港湾,更是我们品味生活、享受时光的地方。当定制红酒与家居设计相遇,它们便共同绘制出一幅充满韵味与格调的生活画卷。今天,就让我们一…...

未来生成式 AI 的发展方向,是 Chat 还是 Agent?
什么是生成式AI? 生成式人工智能(Generative AI)是一种人工智能技术,它能够基于已有的数据模式和结构生成新的数据实例,这些实例可以是文本、图像、音频、视频或任何其他类型的数据。这种技术通常依赖于复杂的算法&am…...

powershell@日期和时间命令和对象
文章目录 abstract获取当前日期和时间格式化日期和时间日期计算👺创建自定义日期和时间👺**[datetime] 类型**及其构造函数缺省值计算日期差异获取特定部分的日期和时间比较日期和时间 常用日期操作总结表时间间隔 TimeSpan 👺创建TimeSpan对…...

【Golang 面试 - 基础题】每日 5 题(八)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

LeetCode 算法:在排序数组中查找元素的第一个和最后一个位置 c++
原题链接🔗:在排序数组中查找元素的第一个和最后一个位置 难度:中等⭐️⭐️ 题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标…...

会话存储、本地存储,路由导航守卫、web会话跟踪、JWT生成token、axios请求拦截、响应拦截
1、会话存储、本地存储 前端浏览器中存储用户信息,会话存储、本地存储、cookie 会话存储(sessionStorage):会话期间存储,关闭浏览器后,数据就会销毁 sessionStorage.setItem("account",resp.d…...

strcmp库函数原型
int strcmp(const char *str1, const char *str2) {unsigned const char *s1 (unsigned const char *) str1;unsigned const char *s2 (unsigned const char *) str2;while (*s1 && *s1 *s2) {s1;s2;}return *s1 - *s2; }while (*s1 && *s1 *s2) 一直循环&…...

在 Vue.js 项目中延迟加载子组件
在 Vue.js 中,当父组件渲染时,子组件的生命周期钩子函数会立即执行,即使这些子组件并未显示。这是因为 Vue.js 会在渲染父组件时实例化所有引用的子组件。为了避免不必要的函数执行,我们可以通过使用 v-if 指令和异步组件延迟加载…...

何时会用到设计模式、七大设计原则介绍
以下关于b站尚硅谷相关设计模式视频的总结 设计模式的重要性: 代码重用性(相同的代码,不用编写很多次)、 可读性(编程规范,便于其他程序员阅读和理解)、 可扩展性(增加新功能时&am…...

编程语言发展历史:赋值与相等运算符的变迁历程
本文摘取自笔者书稿《编程语言发展历史》 赋值运算符是编程语言最基础的运算符,其发展历史也非常有趣。最早的赋值语句就是使用等号“”来表示,一些语言为了让赋值运算在数学形式上更加严谨(形如“x x 1”的表达式在数学上不成立࿰…...

求职Leetcode题目(2)
1.柱状图中最大的矩形 据说这是2024年字节二面的题目,我感觉这道题跟接雨水有点类似,最重要的思路还是要找到什么时候能形成矩形的这么个情况,某个范围的矩形的高度,是由最短的柱形来决定的。 我们先整理一下,解决这道…...

深入探索 Postman:使用 API 性能测试优化你的 Web 服务
引言 在当今快速发展的互联网时代,Web 服务的性能至关重要。API 作为服务之间的桥梁,其性能直接影响到整个应用的响应速度和用户体验。Postman,作为一个多功能的 API 开发工具,提供了强大的性能测试功能,帮助开发者评…...

校车购票小程序的设计
管理员账户功能包括:系统首页,个人中心,学生管理,我的乘车信息管理,车辆信息管理,座位管理,系统管理 微信端账号功能包括:系统首页,车辆信息,我的 开发系统…...

拯救数据危机!2024年最受欢迎的数据恢复软件评测
现在大家快速传输资料的方式都变成了电子档,有些数据是存储在电脑上,有些存储在手机,有的存储在U盘甚至其他一些电子设备上。电子设备存储数据方便,丢失数据也总在意料之外。很多时候我们多学会一个工具,比如转转大师数…...

记一次因为在html两个地方引入vue.js导致组件注入失败的问题
这个问题我遇到两次了,是在恼火,不对,三次了,我如果不做这个笔记,我确定我还会遇到第三次。 尾部这个去掉就行 因为头部有了 遇到这种bu g好恼火,解决了又怎么样呢?重蹈覆辙的滋味不好受...

Postman中的智慧重试:API测试用例的错误处理与重试逻辑设置
Postman中的智慧重试:API测试用例的错误处理与重试逻辑设置 在API测试过程中,错误处理和重试逻辑是确保测试准确性和可靠性的重要环节。Postman提供了多种功能来处理测试中可能出现的错误,并允许自定义重试逻辑以适应不同的测试场景。本文将…...

docker部署本地词向量模型
开源项目:GitHub - huggingface/text-embeddings-inference: A blazing fast inference solution for text embeddings models 1. 下载词向量模型 参考我的另一篇博客:langchain 加载本地词向量模型 2. 部署词向量模型 就三行命令 model/data/BAAI/…...

接口自动化中对于文件上传的处理方法
正常的接口自动化基本都是json的格式,对于文件上传是一种特殊的格式是表单格式针对这种表单格式在接口自动化中怎么处理,主要通过工作中使用的一个实际的例子进行分享 举例:web上需要导入一个文件实现相关的功能,主要通过两个接口…...

Java高频面试题分享
文章目录 1. 策略模式怎么控制策略的选取1.1 追问:如果有100种策略呢?1.2 追问:什么情况下初始化Map 2. 什么是索引?什么时候用索引?2.1 追问:怎么判断系统什么时候用量比较少2.2 追问:如何实时…...

kvm虚拟化平台部署
kvm虚拟化平台部署 kvm概念简介 kvm自linux2.6版本以后就整合到内核中,因此可以看做是一个原生架构. kvm虚拟化架构 硬件底层提供物理层面的硬件支持 linux(host),就相当于这个架构中的宿主机,上面运行了多个虚拟机。…...

利用arthas热更新class文件
利用arthas热更新class文件 背景:发现一个bug,家里难以复现,需要在现场环境更新几行代码验证。 arthas-boot version: 3.7.1 java -jar arthas-boot.jar启动arthas 1、利用arthas的sc命令查找确定类名称 sc com.**2、反编译为java文件 …...

天机学堂 第四天 高并发优化总结
前端每隔15秒就发起一次请求,将播放记录写入数据库。 但问题是,提交播放记录的业务太复杂了,其中涉及到大量的数据库操作: 如何进行优化 单机并发能力 变同步为异步 合并写请求 提高单机并发:优化SQL,尽…...

Canva收购Leonardo.ai,增强生成式AI技术能力
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

前端练习<HtmlCSS>——照片墙(附完整代码及实现效果)
这个小练习也来源于b站up小K师兄,大家可以通过下面的链接学习哦~up讲的非常详细。 纯CSS写一个简单酷炫的照片墙效果~ 先看一下这个照片墙的效果: 1.鼠标没有放到图片上时,照片同比例,每张照片都有倒影的效果。 2.然…...