【python数据分析】数据索引的创建,取值,排序

简介: 文章目录索引的创建,取值,排序1.多层索引的创建2.多层索引的取值

索引的创建,取值,排序

1.多层索引的创建

多层索引是Pandas中一个比较核心的概念,允许你在一个轴向上拥有多个索引层级,许多同学不能处理复杂的数据,最大的问题在于没法灵活的处理多层索引。

import pandas as pd
s = pd.Series([1, 2, 3, 4, 5, 6],
              index=[['张三', '张三', '李四', '李四', '王五', '王五'],
                     ['期中', '期末', '期中', '期末', '期中', '期末']])
print(s)

✨效果

张三  期中    1
    期末    2
李四  期中    3
    期末    4
王五  期中    5
    期末    6
dtype: int64

从图中数据可以看出,张三那一列是数据的第一层索引,期中那一列是数据的第二层索引,而第二层索引值是和数据一一对应的。

但是,我们在创建的时候发现,也需要将名字和考试阶段一一对应,才可以。

🚩现在,我们将数据增加几个科目的成绩,演示DataFrame多层索引的创建方法。

由于成绩的数据比较多,我们将使用numpy的随机数方法构建成绩数据。

numpy会在后续中讲解,现在大家先体验一下,如何使用numpy构建实验数据

import pandas as pd
import numpy as np
#size参数是指定生成6行3列的数组
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([names,exam])
df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
df

✨下面是运行的效果,我用表格形式来为大家展示

Java Web Python
张三 期中 84 35 57
期末 96 36 92
李四 期中 42 5 64
期末 47 55 76
王五 期中 81 34 74
期末 54 81 69

我们虽然成功的创建了DataFrame的多层索引,但是有一个问题,在设置索引的时候会有很多重复的索引值,如何才能简化索引的写法呢?

Pandas为了解决这个问题,提供了一个创建多层索引的构造方法。

pd.MultiIndex.from_product()构建索引的方式

首先,确定每一层索引的值什么,然后以列表的形势传给from_product()方法即可。

import pandas as pd
import numpy as np
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([names,exam])
df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
print(df)

✨效果

我们成功创建了DataFrame的多层索引,而且你会发现,我们只需要关注每层索引的值都有哪些就可以了。

[names,exam]列表中的位置不同,产生的索引也会不同。

import pandas as pd
import numpy as np
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([exam,names])
df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
print(df)

✨效果

🚩经过上面的两段代码,下面我们一起总结一下:

第一:from_product([exam,names])会将列表中第一个元素作为最外层索引,依次类推;

第二:列表中元素值的对应关系,如下图:

2.多层索引的取值

创建不是我们的目的,我们的目的是如何从多层索引中获取到我们想要的数据。

看下面的代码

import pandas as pd
s = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'],
                                   ['期中','期末','期中','期末','期中','期末']])
print(s)

可以直接使用[]的方式取最外面的一个层级s[‘张三’]

🚩注意:[]取值方式,不可直接使用最外层以外的其他层级,例如:s[‘期末’],并且[‘张三’,‘期末’]他们的顺序不能变。

不知道大家是否还记得loc和iloc的使用?

loc使用的是标签索引,iloc使用的是位置索引。

loc的使用方式和[]的方式基本一样:

但是,iloc的取值并不会受多层索引影响,只会根据数据的位置索引进行取值。

import pandas as pd
import numpy as np
#size参数是指定生成6行3列的数组
data = np.random.randint(0,100,size=(6,3))
names = ['张三','李四','王五']
exam = ['期中','期末']
index = pd.MultiIndex.from_product([names,exam])
df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])
df.iloc[0]

✨效果

Java      84
Web       35
Python    57
Name: (张三, 期中), dtype: int32

在对多层索引DataFrame的取值是,我们推荐使用loc()函数。

同时对一二级索引进行检索:

df.loc['张三'].loc['期中']

✨效果

Java      84
Web       35
Python    57
Name: 期中, dtype: int32
df.loc[('张三','期中')]

✨效果

Java      84
Web       35
Python    57
Name: (张三, 期中)
dtype: int32

🚩注意:DataFrame中对行索引的时候和Series有一个同样的注意点,就是无法直接对二级索引直接进行索引,必须让二级索引变成一级索引后才能对其进行索引!

3.多层索引的排序

有时候,我们需要将分组或创建出来的多层索引数据,根据索引值进行排序。

我们先创建一个简单的多层索引数据:

import pandas as pd
data = np.random.randint(0, 100, size=(9, 3))
key1 = ['b', 'c', 'a']
key2 = [2, 1, 3]
index = pd.MultiIndex.from_product([key1, key2])
df = pd.DataFrame(data, index=index, columns=['Java', 'Web', 'Python'])
df

✨效果

Java Web Python
a 2 19 70 14
1 27 6 14
3 93 27 46
b 2 35 88 87
1 23 31 99
3 59 90 17
c 2 73 40 58
1 14 86 87
3 10 5 75

DataFrame按行索引排序的方法是sort_index(),接下来我们看一下sort_index()是如何对多层索引进行排序。

默认状态下的排序

df.sort_index()

✨效果

通过结果可以看出每一层都会根据索引值进行相应的升序排列。

df.sort_index()中的level参数可以指定是否按照指定的层级进行排列,第一层级索引值为0,第二层级索引值为1。

当level=0时,会根据第一层索引值进行降序排序:df.sort_index(level=0, ascending=False)

✨效果

通过上面的几个排序发现,可以通过level设置排序的索引层级,其他层索引也会根据其排序规则进行排序。

当level=1时,会根据第二层索引值进行降序排序:

✨效果

Java Web Python
c 3 10 5 75
b 3 59 90 17
a 3 93 27 46
c 2 14 86 87
b 2 23 31 99
a 2 27 6 14
c 1 73 40 58
b 1 35 88 87
a 1 19 70 14

通过结果可以看出数据会根据第二层索引值进行相应的降序排列,如果索引值相同时会根据其他层索引值排列

相关文章
|
2月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
138 71
|
1天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
102 82
|
30天前
|
SQL 数据可视化 大数据
从数据小白到大数据达人:一步步成为数据分析专家
从数据小白到大数据达人:一步步成为数据分析专家
219 92
|
7天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
3天前
|
SQL 人工智能 数据可视化
数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式
数据项目复杂,涉及代码、数据、运行环境等多部分。随着AI发展,数据科学团队面临挑战。协作式数据文档(如阿里云DataV Note)成为提升效率的关键工具。它支持跨角色协同、异构数据处理、多语言分析及高效沟通,帮助创建知识库,实现可重现的数据科学过程,并通过一键分享报告促进数据驱动决策。未来,大模型AI将进一步增强其功能,如智能绘图、总结探索、NLP2SQL/Python和AutoReport,为数据分析带来更多可能。
50 20
|
2月前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
154 73
|
2天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
24 12
|
1天前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
27天前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
34 10
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。

热门文章

最新文章