苏州高新区核酸检测,河北邯郸seo网站建设网站优化,老榕树网站建设教学,中国十大传媒公司前言
在数据科学和数据分析领域#xff0c;Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具#xff0c;帮助我们高效地处理和分析数据。其中#xff0c;索引在Pandas中扮演着关键角色#xff0c;它是一种强大的数据组织和访问机制#xff0c;使我们…前言
在数据科学和数据分析领域Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具帮助我们高效地处理和分析数据。其中索引在Pandas中扮演着关键角色它是一种强大的数据组织和访问机制使我们能够更好地理解和操作数据。
本博客将探讨Pandas中与索引相关的核心知识点和常用操作。我们将了解如何设置和重置索引通过索引来选择和过滤数据以及如何利用多级索引来处理复杂的层次结构数据。 索引
当涉及Python或Pandas库中的索引时通常指的是Pandas库中的DataFrame和Series对象的索引。这里只简单介绍一下索引索引的具体用法均在其他操作中
案例数据表university_rank.csv 索引的设置
我们可以在读入数据的时候就通过pd.read_csv相关属性来设置索引列可以是单列也可以是多列需要用列表来表达
读取时设置索引
pd.read_csv(# 设置索引列index_col [].........
)In[0]:
df pd.read_csv(university_rank.csv, index_col[大学名称])
dfout[0]:
排名地区学科领域排名依据大学名称哈佛大学1北美工程学术声誉牛津大学2欧洲医学科研产出北京大学3亚洲商学国际影响力悉尼大学4大洋洲计算机科学教学质量圣保罗大学5南美艺术学生满意度...............圣保罗国立大学96南美计算机科学研究生录取率约翰内斯堡大学97非洲环境科学学术声誉麦吉尔大学98北美艺术学生满意度伦敦政治经济学院99欧洲法律国际影响力东京大学100亚洲教育毕业生就业率
100 rows × 4 columns
如果我想要设置多个变量列作为索引呢
In[1]:
df pd.read_csv(university_rank.csv, index_col[地区, 学科领域]) # 设置多个变量列作为索引
dfout[1]:
大学名称排名排名依据地区学科领域北美工程哈佛大学1学术声誉欧洲医学牛津大学2科研产出亚洲商学北京大学3国际影响力大洋洲计算机科学悉尼大学4教学质量南美艺术圣保罗大学5学生满意度............计算机科学圣保罗国立大学96研究生录取率非洲环境科学约翰内斯堡大学97学术声誉北美艺术麦吉尔大学98学生满意度欧洲法律伦敦政治经济学院99国际影响力亚洲教育东京大学100毕业生就业率
100 rows × 3 columns
DataFrame.set_index方法设置索引
除此之外也可以使用DataFrame类型数据自带的df.set_index方法
df.set_index(# 索引列名需要使用list类型key# 建立索引后是否删除该列drop True# 是否在原索引上添加索引append False# 是否直接修改原dfinplace False# 默认为False如果为True则检查新的索引是否唯一如果有重复则会抛出ValueErrorverify_integrity False
)In[2]:
df pd.read_csv(university_rank.csv)
df.set_index(keys[排名], appendTrue, inplaceTrue)
print(type(df)) # 查看df类型
dfout[2]:
class pandas.core.frame.DataFrame大学名称地区学科领域排名依据排名01哈佛大学北美工程学术声誉12牛津大学欧洲医学科研产出23北京大学亚洲商学国际影响力34悉尼大学大洋洲计算机科学教学质量45圣保罗大学南美艺术学生满意度..................9596圣保罗国立大学南美计算机科学研究生录取率9697约翰内斯堡大学非洲环境科学学术声誉9798麦吉尔大学北美艺术学生满意度9899伦敦政治经济学院欧洲法律国际影响力99100东京大学亚洲教育毕业生就业率
100 rows × 4 columns
上面这个例子就很明显的看出来append参数的作用本来该DataFrame就有一个流水索引后面又添加了一个排名索引并且append参数为True 但是我们发现打印出来是100 row * 4 columns所以排名变成索引后就不在作为一个列来存在了我们可以使用drop参数来改变它
In[3]:
df pd.read_csv(university_rank.csv)
df.set_index(keys[排名], appendTrue, inplaceTrue, dropFalse) # 调整drop参数
dfout[3]: 大学名称排名地区学科领域排名依据排名01哈佛大学1北美工程学术声誉12牛津大学2欧洲医学科研产出23北京大学3亚洲商学国际影响力34悉尼大学4大洋洲计算机科学教学质量45圣保罗大学5南美艺术学生满意度.....................9596圣保罗国立大学96南美计算机科学研究生录取率9697约翰内斯堡大学97非洲环境科学学术声誉9798麦吉尔大学98北美艺术学生满意度9899伦敦政治经济学院99欧洲法律国际影响力99100东京大学100亚洲教育毕业生就业率
100 rows × 5 columns
取消set_index索引设置
那么我们该如何还原呢答案就是使用df.reset_index
df.reset_index()是Pandas DataFrame对象的一个方法它用于重置恢复DataFrame的索引将整数序列作为新的行索引并将原来的行索引可能是整数、字符串或其他类型转换为DataFrame的列。
df.reset_index(# 是否将索引列删除而不还原drop Flase# 是否修改原dfinplace False# 可选参数用于指定要重置的索引级别。如果不指定则会重置所有的索引级别level# 如果DataFrame具有多级列索引该参数用于指定要重置的列级别。默认为0即第一级col_level# 如果指定了col_level则可以使用该参数为重置的列索引命名col_fill
)In[4]:
df.reset_index(dropTrue, inplaceTrue)
df大学名称排名地区学科领域排名依据0哈佛大学1北美工程学术声誉1牛津大学2欧洲医学科研产出2北京大学3亚洲商学国际影响力3悉尼大学4大洋洲计算机科学教学质量4圣保罗大学5南美艺术学生满意度..................95圣保罗国立大学96南美计算机科学研究生录取率96约翰内斯堡大学97非洲环境科学学术声誉97麦吉尔大学98北美艺术学生满意度98伦敦政治经济学院99欧洲法律国际影响力99东京大学100亚洲教育毕业生就业率
100 rows × 5 columns
DataFrame.index.name修改索引名称
此外我们也可以使用df.index.names来修改索引的名称
In[5]:
df.index.names [ID] # df是案例数据表设置索引名称为ID
dfout[5]: 大学名称排名地区学科领域排名依据ID0哈佛大学1北美工程学术声誉1牛津大学2欧洲医学科研产出2北京大学3亚洲商学国际影响力3悉尼大学4大洋洲计算机科学教学质量4圣保罗大学5南美艺术学生满意度..................95圣保罗国立大学96南美计算机科学研究生录取率96约翰内斯堡大学97非洲环境科学学术声誉97麦吉尔大学98北美艺术学生满意度98伦敦政治经济学院99欧洲法律国际影响力99东京大学100亚洲教育毕业生就业率
100 rows × 5 columns 索引的排序
建立完索引后我们可以根据索引来进行排序具体使用的方法是df.sort_index()
DataFrame.sort_index索引排序
df.sort_index()是Pandas DataFrame对象的一个方法用于按照索引行标签对DataFrame进行排序。它可以根据行索引的标签值进行升序或降序排序。
df.sort_index(# 多重索引时的优先级level# 是否为升序ascending True# 是否在原df修改inplace False# 缺失值的排列顺序,可选值有 first 和 last默认为 last表示NaN在排序后放在最后。na_position last# 是否按索引排序后丢弃索引,默认为False如果为True则在排序后重置行索引为从0开始的连续整数索引ignore_index False# 默认为0表示按照行索引排序。如果设置为1则按列索引排序对于多级索引的DataFrameaxis 0# 排序算法的种类。可选值有 quicksort、mergesort、heapsort默认为 quicksortkind quicksort# 默认为True如果在排序时有未指定的级别或索引则对其进行排序。如果设置为False则保持原样sort_remaining True# 1.1.0新增属性可以对索引值进行函数修改key
)In[6]:
df pd.read_csv(university_rank.csv, index_col[学科领域, 地区])
dfout[6]: 大学名称排名排名依据学科领域地区工程北美哈佛大学1学术声誉医学欧洲牛津大学2科研产出商学亚洲北京大学3国际影响力计算机科学大洋洲悉尼大学4教学质量艺术南美圣保罗大学5学生满意度...............计算机科学南美圣保罗国立大学96研究生录取率环境科学非洲约翰内斯堡大学97学术声誉艺术北美麦吉尔大学98学生满意度法律欧洲伦敦政治经济学院99国际影响力教育亚洲东京大学100毕业生就业率
100 rows × 3 columns
In[7]:
df.sort_index()out[7]: 大学名称排名排名依据学科领域地区医学亚洲清华大学34学术声誉亚洲清华大学54教学质量亚洲清华大学74教学质量亚洲清华大学94教学质量北美麦吉尔大学28教学质量...............计算机科学南美里约热内卢大学86研究生录取率南美圣保罗国立大学96研究生录取率大洋洲悉尼大学4教学质量大洋洲墨尔本大学14学术声誉大洋洲奥克兰大学24教学质量
100 rows × 3 columns
In[8]:
df.sort_index(level地区)out[8]: 大学名称排名排名依据学科领域地区医学亚洲清华大学34学术声誉亚洲清华大学54教学质量亚洲清华大学74教学质量亚洲清华大学94教学质量商学亚洲北京大学3国际影响力...............环境科学非洲约翰内斯堡大学57学术声誉非洲约翰内斯堡大学67学术声誉非洲约翰内斯堡大学77学术声誉非洲约翰内斯堡大学87学术声誉非洲约翰内斯堡大学97学术声誉
100 rows × 3 columns
In[9]:
df.sort_index(level地区, ignore_indexTrue)out[9]: 大学名称排名排名依据0清华大学34学术声誉1清华大学54教学质量2清华大学74教学质量3清华大学94教学质量4北京大学3国际影响力............95约翰内斯堡大学57学术声誉96约翰内斯堡大学67学术声誉97约翰内斯堡大学77学术声誉98约翰内斯堡大学87学术声誉99约翰内斯堡大学97学术声誉
100 rows × 3 columns
DataFrame.sort_values变量列排序
如果我想要按照变量来排序呢而不是索引df.sort_values可以帮到你
df.sort_values(# 用于指定排序的列名或列名列表。可以传入单个列名的字符串也可以传入一个包含多个列名的列表表示按照这些列的值进行排序by# 默认为0表示按照行进行排序。如果设置为1则按列进行排序axis 0# 默认为True表示升序排序。如果设置为False表示降序排序ascending True# 默认为False是否在原df上修改inplace False# 指定缺失值NaN在排序后的位置。可选值有 first 和 last默认为 last表示NaN在排序后放在最后na_position last# 默认为False如果为True则在排序后重置行索引为从0开始的连续整数索引ignore_index False
)In[10]:
data {ID: [4, 2, 1, 3],Name: [David, Bob, Alice, Charlie],Age: [40, 30, 25, 35]
}df pd.DataFrame(data)
print(df)out[10]: ID Name Age
2 1 Alice 25
1 2 Bob 30
3 3 Charlie 35
0 4 David 40
现在我们按照’Age’列进行升序排序
In[11]:
df_sorted df.sort_values(byAge)
print(df_sorted)out[11]: ID Name Age
2 1 Alice 25
1 2 Bob 30
3 3 Charlie 35
0 4 David 40结束语
如果有疑问欢迎大家留言讨论你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗我们之间的交流是我最大的动力