首页
学习
活动
专区
圈层
工具
发布

Pandas图鉴(四):MultiIndex

有许多替代的索引器,其中一些允许这样的分配,但它们都有自己的奇怪的规则: 你可以将内层与外层互换,并使用括号。...和Series的 "index"(又称 "info"轴); sort=False,可选择在操作后对相应的MultiIndex进行排序; inplace=False,可选择执行原地操作(对单个索引不起作用...一般来说,使用get_level和set_level来对标签进行必要的修正就足够了,但是如果想一次性对MultiIndex的所有层次进行转换,Pandas有一个(名字不明确的)函数rename,它接受一个...而且,尽管有所有的辅助函数,当一些棘手的Pandas函数返回列中的MultiIndex时,对初学者来说也会倍感厉害。...一种方法是将所有不相关的列索引层层叠加到行索引中,进行必要的计算,然后再将它们解叠回来(使用pdi.lock来保持原来的列顺序)。

1.5K20

【愚公系列】2023年07月 Pandas数据分析之MultiIndex

前言 Pandas中的多级索引(MultiIndex)是指在一个DataFrame或Series中,使用多个索引级别来组织数据。多级索引可用于存储高维数据,如时间序列数据或具有多个分类变量的数据。...([index1, index2]) 创建MultiIndex后,可以使用MultiIndex.get_level_values()方法获取每个级别的值,并使用loc()方法选择特定级别的数据。...下图说明了这个概念: 为了给对应列的尺寸名称留出空间,Pandas将整个标题向上移动: 2.分组 关于多重索引需要注意的第一件事是,它并不按照它可能出现的情况对任何内容进行分组。...当关卡形成规则结构时,您可以指定关键元素,并让Pandas自动交织它们,如下所示: 上面列出的所有方法也适用于列。...本节中的所有函数还有以下参数: axis=None其中None对于DataFrame表示“列”,对于Series表示“索引” sort=False,可选在操作之后对相应的多索引进行排序 inplace

31610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值

    一、前言 前几天在Python星耀交流群有个叫【在下不才】的粉丝问了一个Pandas的问题,按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值,这里拿出来给大家分享下,一起学习...方法一:使用自定义函数 代码如下: import pandas as pd lv = [1, 2, 2, 3, 3, 4, 2, 3, 3, 3, 3] num = [122, 111, 222, 444...return arr - arr.mean() # 按照"lv"列进行分组并计算出"num"列每个分组的平均值,然后"num"列内的每个元素减去分组平均值 df["juncha"] = df.groupby...transform transform能返回完整数据,输出的形状和输入一致(输入是num列,输出也是一列),代码如下: import pandas as pd lv = [1, 2, 2, 3, 3...这篇文章主要分享了Pandas处理相关知识,基于粉丝提出的按照A列进行分组并计算出B列每个分组的平均值,然后对B列内的每个元素减去分组平均值的问题,给出了3个行之有效的方法,帮助粉丝顺利解决了问题。

    4.2K20

    Pandas图鉴(三):DataFrames

    DataFrame有两种可供选择的索引模式:loc用于通过标签进行索引,iloc用于通过位置索引进行索引。 在Pandas中,引用多行/列是一种复制,而不是一种视图。...就像1:1的关系一样,要在Pandas中连接一对1:n的相关表,你有两个选择。...默认情况下,Pandas会对任何可远程求和的东西进行求和,所以必须缩小你的选择范围,如下图: 注意,当对单列求和时,会得到一个Series而不是一个DataFrame。...在上面的例子中,所有的值都是存在的,但它不是必须的: 对数值进行分组,然后对结果进行透视的做法非常普遍,以至于groupby和pivot已经被捆绑在一起,成为一个专门的函数(和一个相应的DataFrame...aggfunc参数控制应该使用哪个聚合函数对行进行分组(默认为平均值)。

    1.9K20

    最全面的Pandas的教程!没有之一!

    构建一个 DataFrame 对象的基本语法如下: 举个例子,我们可以创建一个 5 行 4 列的 DataFrame,并填上随机数据: 看,上面表中的每一列基本上就是一个 Series ,它们都用了同一个...我们可以用 .index.names 给它们加上名字: ? 交叉选择行和列中的数据 我们可以用 .xs() 方法轻松获取到多级索引中某些特定级别的数据。...分组统计 Pandas 的分组统计功能可以按某一列的内容对数据行进行分组,并对其应用统计函数,比如求和,平均数,中位数,标准差等等… 举例来说,用 .groupby() 方法,我们可以对下面这数据表按...'Company' 列进行分组,并用 .mean() 求每组的平均值: 首先,初始化一个DataFrame: ?...然后,调用 .groupby() 方法,并继续用 .mean() 求平均值: ? 上面的结果中,Sales 列就变成每个公司的分组平均数了。

    27.7K64

    数据科学 IPython 笔记本 7.8 分层索引

    ,但不像我们所喜欢的 Pandas 中的切片语法那样干净(或对大型数据集有效)。...作为额外维度的MultiIndex 你可能会注意到其他内容:我们可以使用带有索引和列标签的简单DataFrame,来轻松存储相同的数据。事实上,Pandas 的构建具有这种等价关系。...具体而言,我们可能希望,每年为每个州添加另一列人口统计数据(例如,18 岁以下的人口); 使用MultiIndex就像在DataFrame中添加另一列一样简单: pop_df = pd.DataFrame...列的MultiIndex 在DataFrame中,行和列是完全对称的,就像行可以有多个索引层次一样,列也可以有多个层次。...和``DataFrame`中与数据进行交互,就像本书中的许多工具一样,熟悉它们的最好方法就是尝试它们!

    4.7K20

    Pandas 2.2 中文官方教程和指南(十二·一)

    MultiIndex在轴上进行基本索引 分层索引的一个重要特点是,你可以通过标识数据中的子组的“部分”标签来选择数据。...对 MultiIndex 进行排序 要有效地对 MultiIndex 对象进行索引和切片,它们需要被排序。与任何索引一样,您可以使用 sort_index()。...很重要的原因是它可以让您执行分组、选择和重塑操作,我们将在下面和文档的后续部分中描述。...定义的级别 MultiIndex保留索引的所有定义级别,即使它们实际上没有被使用。在对索引进行切片时,您可能会注意到这一点。...很重要的原因是它可以让您执行分组、选择和重塑操作,正如我们将在下面和文档的后续部分中描述的那样。

    78310

    【愚公系列】2023年07月 Pandas数据分析之DataFrames

    可以使用shape属性查看DataFrame的维度大小: print(df.shape) 输出: (4, 3) 索引和选择 可以使用列名称进行列的选择,并且可以使用切片来选择行。...就像1:1关系一样,在Pandas中连接一对1:n相关的表,你有两种选择。如果要合并的列或者不在索引中,并且可以丢弃碰巧在两张表的索引中都存在的列,则使用merge。...首先,你可以使用一个名称来指定要分组的列,如下图所示: 如果没有as_index=False, Pandas将进行分组的列指定为索引。...默认情况下,Pandas会对所有远端可求和的东西进行求和,因此你需要缩小选择范围,如下所示: 注意,当对单个列求和时,你将得到一个Series而不是DataFrame。...至于相反的操作,你可以使用stack。它将索引和列合并到MultiIndex中: 另一种选择是使用melt: 注意,melt以不同的方式对结果行进行排序。

    60210

    9个value_counts()的小技巧,提高Pandas 数据分析效率

    生成的Series可以按降序或升序排序,通过参数控制包括或排除NA。 在本文中,我们将探讨 Pandas value_counts() 的不同用例。您将学习如何使用它来处理以下常见任务。...默认参数 按升序对结果进行排序 按字母顺序排列结果 结果中包含空值 以百分比计数显示结果 将连续数据分入离散区间 分组并调用 value_counts() 将结果系列转换为 DataFrame 应用于DataFrame...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。...Pandas value_counts() 返回一个Series,包括前面带有 MultiIndex 的示例。...Pandas DataFrame.value_counts() 返回一个包含 DataFrame 中唯一行计数的系列。

    7.2K61

    Pandas图鉴(二):Series 和 Index

    在Pandas中,它被称为MultiIndex(第4部分),索引内的每一列都被称为level。 索引的另一个重要特性是它是不可改变的。与DataFrame中的普通列相比,你不能就地修改它。...索引有一个名字(在MultiIndex的情况下,每一层都有一个名字)。而这个名字在Pandas中没有被充分使用。...一旦在索引中包含了列,就不能再使用方便的df.column_name符号了,而必须恢复到不太容易阅读的df.index或者更通用的df.loc[]。有了MultiIndex。...,叫做find()和findall(),它们速度快(因为它们根据Series的大小自动选择实际的命令),而且更容易使用。...现在你知道它们的存在,可以选择通过删除、用常量值填充或插值来摆脱它们,如下所示: fillna(), dropna(), interpolate() 另一方面,可以继续使用它们。

    1K20

    9个value_counts()的小技巧,提高Pandas 数据分析效率

    生成的Series可以按降序或升序排序,通过参数控制包括或排除NA。 在本文中,我们将探讨 Pandas value_counts() 的不同用例。您将学习如何使用它来处理以下常见任务。...1、默认参数 2、按升序对结果进行排序 3、按字母顺序排列结果 4、结果中包含空值 5、 以百分比计数显示结果 6、将连续数据分入离散区间 7、分组并调用 value_counts() 8、将结果系列转换为...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数。...Pandas value_counts() 返回一个Series,包括前面带有 MultiIndex 的示例。...Pandas DataFrame.value_counts() 返回一个包含 DataFrame 中唯一行计数的系列。

    2.9K20

    系统性的学会 Pandas, 看这一篇就够了!

    # 使用Pandas中的数据结构 score_df = pd.DataFrame(score) 结果: 给分数数据增加行列索引,显示效果更佳: 增加行、列索引: # 构造行索引序列 subjects...1.2.3 MultiIndex与Panel (1)MultiIndex MultiIndex是三维的数据结构; 多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame...把下图中左边的表格转化为使用右边形式进行表示: 下面看看pandas中是怎么实现的: pandas.get_dummies(data, prefix=None) data:array-like, Series...(用于统计分组频率的特殊透视表) pd.crosstab(value1, value2) 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 data.pivot_table...,对颜色分组,price进行聚合: # 按color分组,再取出price1列求平均值 col.groupby(['color'])['price1'].mean() # 和上述一个功能 col['price1

    4.4K20

    使用Pandas完成data列数据处理,按照数据列中元素出现的先后顺序进行分组排列

    一、前言 前几天在Python钻石交流群【瑜亮老师】给大家出了一道Pandas数据处理题目,使用Pandas完成下面的数据操作:把data列中的元素,按照它们出现的先后顺序进行分组排列,结果如new列中展示...import pandas as pd df = pd.DataFrame({ 'data': ['A1', 'D3', 'B2', 'C4', 'A1', 'A2', 'B2', 'B3',...new列为data列分组排序后的结果 print(df) 结果如下图所示: 二、实现过程 方法一 这里【猫药师Kelly】给出了一个解答,代码和结果如下图所示。...,代码如下图所示: import pandas as pd df = pd.DataFrame({ 'data': ['A1', 'D3', 'B2', 'C4', 'A1', 'A2', '...这篇文章主要盘点了使用Pandas完成data列数据处理,按照数据列中元素出现的先后顺序进行分组排列的问题,文中针对该问题给出了具体的解析和代码演示,一共6个方法,欢迎一起学习交流,我相信还有其他方法,

    3.1K10

    系统性的学会 Pandas, 看这一篇就够了!

    # 使用Pandas中的数据结构 score_df = pd.DataFrame(score) 结果: 给分数数据增加行列索引,显示效果更佳: 增加行、列索引: # 构造行索引序列 subjects...1.2.3 MultiIndex与Panel (1)MultiIndex MultiIndex是三维的数据结构; 多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame...把下图中左边的表格转化为使用右边形式进行表示: 下面看看pandas中是怎么实现的: pandas.get_dummies(data, prefix=None) data:array-like, Series...(用于统计分组频率的特殊透视表) pd.crosstab(value1, value2) 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 data.pivot_table...,对颜色分组,price进行聚合: # 按color分组,再取出price1列求平均值 col.groupby(['color'])['price1'].mean() # 和上述一个功能 col['price1

    4.9K30

    系统性总结了 Pandas 所有知识点

    # 使用Pandas中的数据结构 score_df = pd.DataFrame(score) 结果: 给分数数据增加行列索引,显示效果更佳: 增加行、列索引: # 构造行索引序列 subjects...1.2.3 MultiIndex与Panel 1、MultiIndex MultiIndex是三维的数据结构; 多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame...把下图中左边的表格转化为使用右边形式进行表示: 下面看看pandas中是怎么实现的: pandas.get_dummies(data, prefix=None) data:array-like, Series...(用于统计分组频率的特殊透视表) pd.crosstab(value1, value2) 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 data.pivot_table...,对颜色分组,price进行聚合: # 按color分组,再取出price1列求平均值 col.groupby(['color'])['price1'].mean() # 和上述一个功能 col['price1

    3.5K20

    系统性的学会 Pandas, 看这一篇就够了!

    # 使用Pandas中的数据结构 score_df = pd.DataFrame(score) 结果: 给分数数据增加行列索引,显示效果更佳: 增加行、列索引: # 构造行索引序列 subjects...1.2.3 MultiIndex与Panel (1)MultiIndex MultiIndex是三维的数据结构; 多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame...把下图中左边的表格转化为使用右边形式进行表示: 下面看看pandas中是怎么实现的: pandas.get_dummies(data, prefix=None) data:array-like, Series...(用于统计分组频率的特殊透视表) pd.crosstab(value1, value2) 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数 data.pivot_table...,对颜色分组,price进行聚合: # 按color分组,再取出price1列求平均值 col.groupby(['color'])['price1'].mean() # 和上述一个功能 col['price1

    4.6K40

    Pandas透视表及应用

    Pandas 透视表概述 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视表中的排列有关。...之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、列标和页字段。每一次改变版面布置时,数据透视表会立即按照新的布置重新计算数据。...,index,columns,aggfunc,下面通过案例介绍pivot_tabe的使用  零售会员数据分析案例 业务背景介绍 某女鞋连锁零售企业,当前业务以线下门店为主,线上销售为辅,通过对会员的注册数据以及的分析...第一个月数据是之前所有会员数量的累积(数据质量问题) 由于会员等级跟消费金额挂钩,所以会员等级分布分析可以说明会员的质量  通过groupby实现,注册年月,会员等级,按这两个字段分组,对任意字段计数... 分组之后得到的是multiIndex类型的索引,将multiIndex索引变成普通索引 custom_info.groupby(['注册年月','会员等级'])['会员卡号'].count().reset_index

    66710

    【数据处理包Pandas】多级索引的创建及使用

    import numpy as np import pandas as pd 一、元组作为一级索引 如果想产生如下图所示的学生成绩表: 因为 DataFrame 的行索引/列索引要求是不可变的,因此考虑使用元组做索引是很自然的选择...: (一)示例1 使用元组索引查询时,对 Series 和 DataFrame 的操作不统一,后者需要对元组索引额外加中括号,而前者不用!...创建主要有三个相关的函数:from_tuples、from_arrays和from_product,它们都是pd.MultiIndex类的方法 1、使用pd.MultiIndex.from_tuples...,例如#4处);注意:loc行选择器不能省略,因为只要包含行索引,一定要使用行选择器loc或iloc,而选择列索引则不需要!...sort_index()函数对索引进行排序。

    56000
    领券