Python酷库之旅-第三方库Pandas(206)
目录
一、用法精讲
961、pandas.IntervalIndex.mid属性
961-1、语法
961-2、参数
961-3、功能
961-4、返回值
961-5、说明
961-6、用法
961-6-1、数据准备
961-6-2、代码示例
961-6-3、结果输出
962、pandas.IntervalIndex.length属性
962-1、语法
962-2、参数
962-3、功能
962-4、返回值
962-5、说明
962-6、用法
962-6-1、数据准备
962-6-2、代码示例
962-6-3、结果输出
963、pandas.IntervalIndex.get_loc方法
963-1、语法
963-2、参数
963-3、功能
963-4、返回值
963-5、说明
963-6、用法
963-6-1、数据准备
963-6-2、代码示例
963-6-3、结果输出
964、pandas.IntervalIndex.get_indexer方法
964-1、语法
964-2、参数
964-3、功能
964-4、返回值
964-5、说明
964-6、用法
964-6-1、数据准备
964-6-2、代码示例
964-6-3、结果输出
965、pandas.MultiIndex类
965-1、语法
965-2、参数
965-3、功能
965-4、返回值
965-5、说明
965-6、用法
965-6-1、数据准备
965-6-2、代码示例
965-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
961、pandas.IntervalIndex.mid属性
961-1、语法
# 961、pandas.IntervalIndex.mid属性
pandas.IntervalIndex.mid
961-2、参数
无
961-3、功能
用于返回IntervalIndex中每个区间的中点,该属性对每个在IntervalIndex中定义的区间计算中间值,结果是一个Float64Index或Int64Index,具体取决于区间的类型。
961-4、返回值
返回值是一个Float64Index,它包含每个区间的中间值,这些中间值是通过计算每个区间的下限和上限之间的平均值得到的。具体来说,对于每个区间[a, b],中点计算公式为(a + b) / 2。
961-5、说明
无
961-6、用法
961-6-1、数据准备
无
961-6-2、代码示例
# 961、pandas.IntervalIndex.mid属性
import pandas as pd
# 创建一个IntervalIndex
interval_index = pd.IntervalIndex.from_tuples([(1, 3), (4, 6), (7, 9)])
# 获取每个区间的中点
mid_points = interval_index.mid
print(mid_points)
961-6-3、结果输出
# 961、pandas.IntervalIndex.mid属性
# Index([2.0, 5.0, 8.0], dtype='float64')
962、pandas.IntervalIndex.length属性
962-1、语法
# 962、pandas.IntervalIndex.length属性
pandas.IntervalIndex.length
962-2、参数
无
962-3、功能
计算IntervalIndex中每个区间的长度。
962-4、返回值
返回一个Int64Index对象,包含每个区间的长度。
962-5、说明
无
962-6、用法
962-6-1、数据准备
无
962-6-2、代码示例
# 962、pandas.IntervalIndex.length属性
import pandas as pd
# 创建一个IntervalIndex
intervals = pd.IntervalIndex.from_tuples([(0, 1), (1, 3), (3, 5)])
# 计算区间的长度
lengths = intervals.length
print(lengths)
962-6-3、结果输出
# 962、pandas.IntervalIndex.length属性
# Index([1, 2, 2], dtype='int64')
963、pandas.IntervalIndex.get_loc方法
963-1、语法
# 963、pandas.IntervalIndex.get_loc方法
pandas.IntervalIndex.get_loc(key)
Get integer location, slice or boolean mask for requested label.
Parameters:
key
label
Returns:
int if unique index, slice if monotonic index, else mask
963-2、参数
963-2-1、key(必须):表示要查找的区间,可以是一个Interval对象。
963-3、功能
用于查找指定的区间在IntervalIndex中的位置(索引),该方法可以帮助你快速确定某个区间是否存在于IntervalIndex中,以及它的位置。
963-4、返回值
返回指定区间的整数索引,如果区间不存在,则会抛出KeyError。
963-5、说明
无
963-6、用法
963-6-1、数据准备
无
963-6-2、代码示例
# 963、pandas.IntervalIndex.get_loc方法
import pandas as pd
# 创建一个IntervalIndex
intervals = pd.IntervalIndex.from_tuples([(0, 1), (1, 3), (3, 5)])
# 使用get_loc查找区间的位置
loc1 = intervals.get_loc(pd.Interval(0, 1))
loc2 = intervals.get_loc(pd.Interval(1, 3))
print(loc1)
print(loc2)
963-6-3、结果输出
# 963、pandas.IntervalIndex.get_loc方法
# 0
# 1
964、pandas.IntervalIndex.get_indexer方法
964-1、语法
# 964、pandas.IntervalIndex.get_indexer方法
pandas.IntervalIndex.get_indexer(target, method=None, limit=None, tolerance=None)
Compute indexer and mask for new index given the current index.
The indexer should be then used as an input to ndarray.take to align the current data to the new index.
Parameters:
targetIndex
method{None, ‘pad’/’ffill’, ‘backfill’/’bfill’, ‘nearest’}, optional
default: exact matches only.
pad / ffill: find the PREVIOUS index value if no exact match.
backfill / bfill: use NEXT index value if no exact match
nearest: use the NEAREST index value if no exact match. Tied distances are broken by preferring the larger index value.
limitint, optional
Maximum number of consecutive labels in target to match for inexact matches.
toleranceoptional
Maximum distance between original and new labels for inexact matches. The values of the index at the matching locations must satisfy the equation abs(index[indexer] - target) <= tolerance.
Tolerance may be a scalar value, which applies the same tolerance to all values, or list-like, which applies variable tolerance per element. List-like includes list, tuple, array, Series, and must be the same size as the index and its dtype must exactly match the index’s type.
Returns:
np.ndarray[np.intp]
Integers from 0 to n - 1 indicating that the index at these positions matches the corresponding target values. Missing values in the target are marked by -1.
Notes
Returns -1 for unmatched values, for further explanation see the example below.
964-2、参数
964-2-1、target(必须):array-like,一个包含要查找的值的数组或序列,这些值可以是区间的边界或其他数值。
964-2-2、method(可选,默认值为None):str,指定查找方法,可选值包括:
- 'pad'或'ffill':查找第一个小于或等于目标值的区间(向前查找)。
- 'backfill'或'bfill':查找第一个大于目标值的区间(向后查找)。
964-2-3、limit(可选,默认值为None):int,限制结果中可以返回的匹配数量,如果设置了这个参数,返回的位置索引将受到限制。
964-2-4、tolerance(可选,默认值为None):array-like,指定容忍度,以控制可以接受的值范围,如果提供了这个参数,则只有在区间边界内的值才会被视为匹配。
964-3、功能
检索target中每个元素在IntervalIndex中的索引位置,它能够处理不同的查找策略(如精确匹配、向前查找和向后查找)。
964-4、返回值
返回一个一维的NumPy数组,其中包含target中每个值在IntervalIndex中的对应索引,如果某个值在区间中没有找到,则返回-1。
964-5、说明
无
964-6、用法
964-6-1、数据准备
无
964-6-2、代码示例
# 964、pandas.IntervalIndex.get_indexer方法
import pandas as pd
index = pd.Index(['c', 'a', 'b'])
arr1 = index.get_indexer(['a', 'b', 'x'])
print(arr1)
964-6-3、结果输出
# 964、pandas.IntervalIndex.get_indexer方法
# [ 1 2 -1]
965、pandas.MultiIndex类
965-1、语法
# 965、pandas.MultiIndex类
class pandas.MultiIndex(levels=None, codes=None, sortorder=None, names=None, dtype=None, copy=False, name=None, verify_integrity=True)
A multi-level, or hierarchical, index object for pandas objects.
Parameters:
levels
sequence of arrays
The unique labels for each level.
codes
sequence of arrays
Integers for each level designating which label at each location.
sortorder
optional int
Level of sortedness (must be lexicographically sorted by that level).
names
optional sequence of objects
Names for each of the index levels. (name is accepted for compat).
copy
bool, default False
Copy the meta-data.
verify_integrity
bool, default True
Check that the levels/codes are consistent and valid.
See also
MultiIndex.from_arrays
Convert list of arrays to MultiIndex.
MultiIndex.from_product
Create a MultiIndex from the cartesian product of iterables.
MultiIndex.from_tuples
Convert list of tuples to a MultiIndex.
MultiIndex.from_frame
Make a MultiIndex from a DataFrame.
Index
The base pandas Index type.
Notes
See the user guide for more.
965-2、参数
965-2-1、levels(可选,默认值为None):list,一个包含多个层级(levels)列表的集合,每个层级包含该层的所有唯一值,这些值在创建MultiIndex时定义了每一层的内容。
965-2-2、codes(可选,默认值为None):list,一个包含整数列表的集合,表示各个层级的索引位置,长度应与levels参数对应,指定每个层级中对应值的位置。
965-2-3、sortorder(可选,默认值为None):int,指定索引的排序顺序,可以是一个整数,表示根据哪个层级进行排序。
965-2-4、names(可选,默认值为None):list,为MultiIndex的每一层级指定名称,可以帮助在访问或操作数据时提高可读性,默认情况下,层级没有名称。
965-2-5、dtype(可选,默认值为None):数据类型,指定索引的数据类型,默认情况下会根据提供的数据和层级自动推断。
965-2-6、copy(可选,默认值为False):bool,是否复制输入数据,默认值为False,如果为True,将强制复制数据。
965-2-7、name(可选,默认值为None):string,为整个索引设置一个通用名称(单一名称),当MultiIndex作为某一列的索引时会用到。
965-2-8、verify_integrity(可选,默认值为True):bool,是否验证数组的完整性,确保不含有重复的条目。
965-3、功能
支持多重层级索引,允许在同一数据结构中组织更多的层次信息,对于处理复杂的数据,如时间序列或分组数据,特别有用。
965-4、返回值
返回一个pandas.MultiIndex对象,可以将其直接用于pandas的DataFrame或Series中作为索引,其提供的方法和属性使得对多层结构数据的操作非常灵活和高效,包括切片、合并、重设索引等。
965-5、说明
无
965-6、用法
965-6-1、数据准备
无
965-6-2、代码示例
# 965、pandas.MultiIndex类
import pandas as pd
# 创建多个层级的索引
levels = [['A', 'B'], [1, 2]]
codes = [[0, 0, 1, 1], [0, 1, 0, 1]] # A1, A2, B1, B2
# 创建MultiIndex
multi_index = pd.MultiIndex(levels=levels, codes=codes, names=['Letter', 'Number'])
# 创建一个DataFrame,并使用MultiIndex
data = {'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data, index=multi_index)
# 显示DataFrame
print("初始DataFrame:")
print(df)
# 选取A的所有数据
print("\n选择'A'的数据:")
print(df.loc['A'])
# 选择特定层级的值,例如'B'和1
print("\n选择'B'1的数据:")
print(df.loc[('B', 1)])
# 重设索引
df_reset = df.reset_index()
print("\n重设索引后的DataFrame:")
print(df_reset)
# 通过层级进行分组并计算均值
grouped = df.groupby(level='Letter').mean()
print("\n按字母分组计算均值:")
print(grouped)
965-6-3、结果输出
# 965、pandas.MultiIndex类
# 初始DataFrame:
# Value
# Letter Number
# A 1 10
# 2 20
# B 1 30
# 2 40
#
# 选择'A'的数据:
# Value
# Number
# 1 10
# 2 20
#
# 选择'B'1的数据:
# Value 30
# Name: (B, 1), dtype: int64
#
# 重设索引后的DataFrame:
# Letter Number Value
# 0 A 1 10
# 1 A 2 20
# 2 B 1 30
# 3 B 2 40
#
# 按字母分组计算均值:
# Value
# Letter
# A 15.0
# B 35.0