【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织

这篇具有很好参考价值的文章主要介绍了【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在数据科学和数据分析领域,Pandas是一个备受喜爱的Python库。它提供了丰富的数据结构和灵活的工具,帮助我们高效地处理和分析数据。其中,索引在Pandas中扮演着关键角色,它是一种强大的数据组织和访问机制,使我们能够更好地理解和操作数据。

本博客将探讨Pandas中与索引相关的核心知识点和常用操作。我们将了解如何设置和重置索引,通过索引来选择和过滤数据,以及如何利用多级索引来处理复杂的层次结构数据。


索引

当涉及Python或Pandas库中的索引时,通常指的是Pandas库中的DataFrame和Series对象的索引。这里只简单介绍一下索引,索引的具体用法均在其他操作中

案例数据表university_rank.csv

【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织,Python,数据挖掘,python,数据分析

索引的设置

我们可以在读入数据的时候就通过pd.read_csv相关属性来设置索引列,可以是单列也可以是多列,需要用列表来表达

读取时设置索引
pd.read_csv(
    # 设置索引列
    index_col = []
    .....
    ....
)

In[0]:

df = pd.read_csv("university_rank.csv", index_col=["大学名称"])
df

out[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=["地区", "学科领域"]) # 设置多个变量列作为索引
df

out[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
    # 是否直接修改原df
    inplace = False
    # 默认为False,如果为True,则检查新的索引是否唯一,如果有重复则会抛出ValueError
    verify_integrity = False
)

In[2]:

df = pd.read_csv("university_rank.csv")
df.set_index(keys=["排名"], append=True, inplace=True)
print(type(df)) # 查看df类型
df

out[2]:

<class 'pandas.core.frame.DataFrame'>
大学名称 地区 学科领域 排名依据
排名
0 1 哈佛大学 北美 工程 学术声誉
1 2 牛津大学 欧洲 医学 科研产出
2 3 北京大学 亚洲 商学 国际影响力
3 4 悉尼大学 大洋洲 计算机科学 教学质量
4 5 圣保罗大学 南美 艺术 学生满意度
... ... ... ... ... ...
95 96 圣保罗国立大学 南美 计算机科学 研究生录取率
96 97 约翰内斯堡大学 非洲 环境科学 学术声誉
97 98 麦吉尔大学 北美 艺术 学生满意度
98 99 伦敦政治经济学院 欧洲 法律 国际影响力
99 100 东京大学 亚洲 教育 毕业生就业率

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=["排名"], append=True, inplace=True, drop=False) # 调整drop参数
df

out[3]:

大学名称 排名 地区 学科领域 排名依据
排名
0 1 哈佛大学 1 北美 工程 学术声誉
1 2 牛津大学 2 欧洲 医学 科研产出
2 3 北京大学 3 亚洲 商学 国际影响力
3 4 悉尼大学 4 大洋洲 计算机科学 教学质量
4 5 圣保罗大学 5 南美 艺术 学生满意度
... ... ... ... ... ... ...
95 96 圣保罗国立大学 96 南美 计算机科学 研究生录取率
96 97 约翰内斯堡大学 97 非洲 环境科学 学术声誉
97 98 麦吉尔大学 98 北美 艺术 学生满意度
98 99 伦敦政治经济学院 99 欧洲 法律 国际影响力
99 100 东京大学 100 亚洲 教育 毕业生就业率

100 rows × 5 columns

取消set_index索引设置

那么我们该如何还原呢,答案就是使用df.reset_index

df.reset_index()是Pandas DataFrame对象的一个方法,它用于重置(恢复)DataFrame的索引,将整数序列作为新的行索引,并将原来的行索引(可能是整数、字符串或其他类型)转换为DataFrame的列。

df.reset_index(
    # 是否将索引列删除,而不还原
    drop = Flase
    # 是否修改原df
    inplace = False
    #  可选参数,用于指定要重置的索引级别。如果不指定,则会重置所有的索引级别
    level
    # 如果DataFrame具有多级列索引,该参数用于指定要重置的列级别。默认为0,即第一级
	col_level
	# 如果指定了col_level,则可以使用该参数为重置的列索引命名
	col_fill
)

In[4]:

df.reset_index(drop=True, inplace=True)
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
df

out[5]:

大学名称 排名 地区 学科领域 排名依据
ID
0 哈佛大学 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,则按列索引排序(对于多级索引的DataFrame)
    axis = 0
	# 排序算法的种类。可选值有 'quicksort'、'mergesort'、'heapsort',默认为 'quicksort'
	kind = 'quicksort'
	# 默认为True,如果在排序时有未指定的级别或索引,则对其进行排序。如果设置为False,则保持原样
	sort_remaining = True
    # 1.1.0新增属性,可以对索引值进行函数修改
    key
)

In[6]:

df = pd.read_csv("university_rank.csv", index_col=["学科领域", "地区"])
df

out[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_index=True)

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(by='Age')
print(df_sorted)

out[11]:

   ID     Name  Age
2   1    Alice   25
1   2      Bob   30
3   3  Charlie   35
0   4    David   40

结束语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!文章来源地址https://www.toymoban.com/news/detail-608239.html

到了这里,关于【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python数据分析-数据挖掘(准备数据——数据建模——模型评估——模型应用)

    20 理解业务和数据:我们需要做好什么计划?_哔哩哔哩_bilibili 目录   一、理解业务和数据:我们需要做好什么计划? 1.1两个思想问题 1.2为什么数据挖掘不是万能的 1.3业务背景与目标 1.4把握数据  1.5总结 二、 准备数据:如何处理出完整、干净的数据? 2.1找到数据 2.2数据探索

    2024年02月05日
    浏览(55)
  • 【Python】数据分析+数据挖掘——变量列的相关操作

    在Python和Pandas中,变量列操作指的是对DataFrame中的列进行操作,包括但不限于 选择列、重命名列、添加新列、删除列、修改列数据 等操作。这些操作可以帮助我们处理数据、分析数据和进行特征工程等。 概述 下面将会列出一些基本的操作指令 案例数据表university_rank.csv In

    2024年02月16日
    浏览(32)
  • 大数据教材推荐|Python数据挖掘入门、进阶与案例分析

      主   编: 卢滔,张良均,戴浩,李曼,陈四德 出版社: 机械工业出版社 内容提要 本书从实践出发,结合11个 “泰迪杯” 官方推出的赛题,按照赛题的难易程度进行排序,由浅入深地介绍数据挖掘技术在 商务、教育、交通、传媒、旅游、电力、制造业等行业的应用 。因

    2024年02月10日
    浏览(31)
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月08日
    浏览(60)
  • 大数据图书推荐:Python数据分析与挖掘实战(第2版)

    《Python数据分析与挖掘实战(第2版)》的配套学习视频,课程内容共分为基础篇(第1~5章)和实战篇(第6~11章)。      基础篇内容包括数据挖掘的概述、基本流程、常用工具、开发环境,Python数据挖掘的编程基础、数据探索、数据预处理、数据挖掘算法基础等基础知识;

    2024年02月02日
    浏览(39)
  • python数据分析与挖掘实战(商品零售购物篮分析)

            购物篮分析是商业领域最前沿、最具挑战性的问题之一,也是许多企业重点研究的问题。购物篮分析是通过发现顾客在一次购买行为中放入购物篮中不同商品之间的关联,研究顾客的购买行为,从而辅助零售企业制定营销策略的一种数据分析方法。        本篇文章

    2024年02月06日
    浏览(42)
  • Python高分大数据分析与挖掘大作业

    1.创建一个Python脚本,命名为test1.py,完成以下功能。 (1)生成两个3×3矩阵,并计算矩阵的乘积。 (2)求矩阵 A= -1 1 0 -4 3 0 1 02 的特征值和特征向量。 (3)设有矩阵 A = 5 2 1 2 01 ,试对其进行奇异分解。 求解过程 2.油气藏的储量密度 Y 与生油门限以下平均地温梯度 X 1、

    2024年02月04日
    浏览(36)
  • 【python】数据挖掘分析清洗——缺失值处理方法汇总

    本文链接:https://blog.csdn.net/weixin_47058355/article/details/128866686 数据挖掘系列: 缺失值处理方法汇总 离散化方法汇总 离群点(异常值)处理方法汇总 标准化(数据归一化)处理方法汇总 特征选择(特征筛选)方法汇总 特征选择筛选(降维)方法汇总 分类预测方法汇总 看了下网络上做

    2024年02月02日
    浏览(39)
  • Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘

    本案例将根据已收集到的电力数据,深度挖掘各电力设备的电流、电压和功率等情况,分析各电力设备的实际用电量,进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考《Python数据挖掘:入门进阶与实用案例分析》一书。 为了更好地监测用电设备的

    2024年02月08日
    浏览(38)
  • 【python】数据挖掘分析清洗——特征选择(特征筛选)方法汇总

    本文链接:https://blog.csdn.net/weixin_47058355/article/details/130400400?spm=1001.2014.3001.5501 数据挖掘系列: 缺失值处理方法汇总 离散化方法汇总 离群点(异常值)处理方法汇总 标准化(数据归一化)处理方法汇总 特征选择(特征筛选)方法汇总 特征选择筛选(降维)方法汇总 分类预测方法汇

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包