目录
一、用法精讲
891、pandas.Index.nunique方法
891-1、语法
891-2、参数
891-3、功能
891-4、返回值
891-5、说明
891-6、用法
891-6-1、数据准备
891-6-2、代码示例
891-6-3、结果输出
892、pandas.Index.value_counts方法
892-1、语法
892-2、参数
892-3、功能
892-4、返回值
892-5、说明
892-6、用法
892-6-1、数据准备
892-6-2、代码示例
892-6-3、结果输出
893、pandas.Index.set_names方法
893-1、语法
893-2、参数
893-3、功能
893-4、返回值
893-5、说明
893-6、用法
893-6-1、数据准备
893-6-2、代码示例
893-6-3、结果输出
894、pandas.Index.droplevel方法
894-1、语法
894-2、参数
894-3、功能
894-4、返回值
894-5、说明
894-6、用法
894-6-1、数据准备
894-6-2、代码示例
894-6-3、结果输出
895、pandas.Index.dropna方法
895-1、语法
895-2、参数
895-3、功能
895-4、返回值
895-5、说明
895-6、用法
895-6-1、数据准备
895-6-2、代码示例
895-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
891、pandas.Index.nunique方法
891-1、语法
# 891、pandas.Index.nunique方法
pandas.Index.nunique(dropna=True)
Return number of unique elements in the object.Excludes NA values by default.Parameters:
dropna
bool, default True
Don’t include NaN in the count.Returns:
int
891-2、参数
891-2-1、dropna(可选,默认值为True):布尔值,如果为True,则在计算唯一值的数量时忽略 NaN 值(空值);如果为False,则NaN值也会被计算在内。
891-3、功能
用于计算Index中的唯一值的数量,唯一值是指在Index中仅出现一次的值。
891-4、返回值
返回一个整数,表示Index中的唯一值的数量。
891-5、说明
无
891-6、用法
891-6-1、数据准备
无
891-6-2、代码示例
# 891、pandas.Index.nunique方法
import pandas as pd
# 创建一个Index对象
index = pd.Index([1, 2, 2, 3, 4, 4, 5, None])
# 计算唯一值的数量,忽略NaN值
nunique = index.nunique(dropna=True)
print(nunique)
# 计算唯一值的数量,包括NaN值
nunique = index.nunique(dropna=False)
print(nunique)
891-6-3、结果输出
# 891、pandas.Index.nunique方法
# 5
# 6
892、pandas.Index.value_counts方法
892-1、语法
# 892、pandas.Index.value_counts方法
pandas.Index.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)
Return a Series containing counts of unique values.The resulting object will be in descending order so that the first element is the most frequently-occurring element. Excludes NA values by default.Parameters:
normalize
bool, default False
If True then the object returned will contain the relative frequencies of the unique values.sort
bool, default True
Sort by frequencies when True. Preserve the order of the data when False.ascending
bool, default False
Sort in ascending order.bins
int, optional
Rather than count values, group them into half-open bins, a convenience for pd.cut, only works with numeric data.dropna
bool, default True
Don’t include counts of NaN.Returns:
Series
892-2、参数
892-2-1、normalize(可选,默认值为False):表示控制是否返回相对频率,如果normalize=True,则返回的是每个值的相对频率(即占总数的比例),而不是绝对的频数;当normalize=False时,返回的是每个值的绝对出现次数。
892-2-2、sort(可选,默认值为True):表示控制返回结果是否按照频数排序,如果sort=True,则按频数从高到低排序;如果sort=False,则保留原始顺序。
892-2-3、ascending(可选,默认值为False):表示控制返回结果的排序顺序,当ascending=True时,结果按频数从低到高排序;当ascending=False时,结果按频数从高到低排序。
892-2-4、bins(可选,默认值为None):将数据分箱,适合连续数据,如果提供一个整数值,比如bins=10,则会将数据进行分箱(binning),返回每个箱中的数据频数,而不是每个唯一值的频数。
892-2-5、dropna(可选,默认值为True):表示控制是否排除NaN值,当dropna=True时,NaN值会被忽略;当dropna=False时,NaN值也会计入统计。
892-3、功能
用于计算索引中各个唯一值的出现次数,并返回一个按频率排序的Series,该功能在数据分析中非常有用,特别是当需要了解数据的分布情况时。
892-4、返回值
返回值是一个pandas.Series对象,其中索引为唯一值或区间,值为相应的频数或频率(当normalize=True时),返回的Series会根据sort和ascending参数的设定进行排序。
892-5、说明
无
892-6、用法
892-6-1、数据准备
无
892-6-2、代码示例
# 892、pandas.Index.value_counts方法
import pandas as pd
index = pd.Index([1, 2, 2, 3, 3, 3, None, None, 4])
# 默认使用
result = index.value_counts()
# 自定义参数使用
result_normalized = index.value_counts(normalize=True)
result_bins = index.value_counts(bins=3)
result_dropna = index.value_counts(dropna=False)
print("默认频数统计:\n", result)
print("相对频率统计:\n", result_normalized)
print("分箱后的频数统计:\n", result_bins)
print("包括缺失值的频数统计:\n", result_dropna)
892-6-3、结果输出
# 892、pandas.Index.value_counts方法
# 默认频数统计:
# 3.0 3
# 2.0 2
# 1.0 1
# 4.0 1
# Name: count, dtype: int64
# 相对频率统计:
# 3.0 0.428571
# 2.0 0.285714
# 1.0 0.142857
# 4.0 0.142857
# Name: proportion, dtype: float64
# 分箱后的频数统计:
# (0.996, 2.0] 3
# (2.0, 3.0] 3
# (3.0, 4.0] 1
# Name: count, dtype: int64
# 包括缺失值的频数统计:
# 3.0 3
# 2.0 2
# NaN 2
# 1.0 1
# 4.0 1
# Name: count, dtype: int64
893、pandas.Index.set_names方法
893-1、语法
# 893、pandas.Index.set_names方法
pandas.Index.set_names(names, *, level=None, inplace=False)
Set Index or MultiIndex name.Able to set new names partially and by level.Parameters:
nameslabel or list of label or dict-like for MultiIndex
Name(s) to set.Changed in version 1.3.0.levelint, label or list of int or label, optional
If the index is a MultiIndex and names is not dict-like, level(s) to set (None for all levels). Otherwise level must be None.Changed in version 1.3.0.inplacebool, default False
Modifies the object directly, instead of creating a new Index or MultiIndex.Returns:
Index or None
The same type as the caller or None if inplace=True.
893-2、参数
893-2-1、names(必需):表示要设置的索引名称,可以是单个字符串或字符串列表,如果是单个字符串,则将设置所有级别的名称;如果是字符串列表,则每个字符串对应一个级别的名称。
893-2-2、level(可选,默认值为None):指定要设置名称的级别,如果未指定,则设置所有级别的名称,可以是整数或字符串,表示级别的索引或名称。
893-2-3、inplace(可选,默认值为False):布尔值,如果为True,则直接修改原索引对象;如果为False,则返回一个新的索引对象。
893-3、功能
设置索引的名称,包括多级索引的名称,可以设置所有级别的名称,也可以指定某个级别的名称。
893-4、返回值
如果inplace=False(默认),则返回一个新的索引对象,其名称已被设置;如果inplace=True,则不返回任何值,直接修改原索引对象。
893-5、说明
无
893-6、用法
893-6-1、数据准备
无
893-6-2、代码示例
# 893、pandas.Index.set_names方法
import pandas as pd
# 创建一个多级索引
index = pd.MultiIndex.from_tuples([('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')])
# 设置所有级别的名称
index = index.set_names(['一级', '二级'])
print("设置所有级别的名称后:", index.names)
# 直接在原索引对象上修改名称(使用 inplace=True)
index.set_names(['一级', '新二级'], inplace=True)
print("直接在原索引对象上修改名称后:", index.names)
893-6-3、结果输出
# 893、pandas.Index.set_names方法
# 设置所有级别的名称后: ['一级', '二级']
# 直接在原索引对象上修改名称后: ['一级', '新二级']
894、pandas.Index.droplevel方法
894-1、语法
# 894、pandas.Index.droplevel方法
final pandas.Index.droplevel(level=0)
Return index with requested level(s) removed.If resulting index has only 1 level left, the result will be of Index type, not MultiIndex. The original index is not modified inplace.Parameters:
level
int, str, or list-like, default 0
If a string is given, must be the name of a level If list-like, elements must be names or indexes of levels.Returns:
Index or MultiIndex
894-2、参数
894-2-1、level(可选,默认值为0):int或者str或者list,指定要删除的层级索引,当只有一个层级时,无法删除,会引发错误。
int
:表示要删除的层级索引的索引号,索引层级从0开始计数。str
:表示要删除的层级索引的名称,如果MultiIndex的层级索引有名称,可以直接指定名称删除。list
:如果有多个层级要删除,可以提供一个包含层级索引的列表。
894-3、功能
删除指定的索引层级,当你在pandas中使用多层索引时,有时可能希望简化索引层级,去除某一层索引,这时可以用droplevel来完成。
894-4、返回值
返回一个新的Index或者MultiIndex对象,返回的索引类型取决于删除层级后的剩余层数:
- 如果删除后只剩下单层索引,则返回一个普通的
Index
对象。 - 如果删除后仍有多层,则返回一个
MultiIndex
对象。
894-5、说明
无
894-6、用法
894-6-1、数据准备
无
894-6-2、代码示例
# 894、pandas.Index.droplevel方法
# 894-1、删除单层索引
import pandas as pd
index = pd.MultiIndex.from_tuples([(1, 'a'), (2, 'b'), (3, 'c')], names=['number', 'letter'])
df = pd.DataFrame({'value': [10, 20, 30]}, index=index)
print(df)
df.index = df.index.droplevel(level='number')
print(df, end='\n\n')# 894-2、删除多层索引
import pandas as pd
index = pd.MultiIndex.from_tuples([(1, 'a', 'X'), (2, 'b', 'Y'), (3, 'c', 'Z')], names=['number', 'letter', 'code'])
df = pd.DataFrame({'value': [10, 20, 30]}, index=index)
print(df)
df.index = df.index.droplevel(level=['number', 'letter'])
print(df)
894-6-3、结果输出
# 894、pandas.Index.droplevel方法
# 894-1、删除单层索引
# value
# number letter
# 1 a 10
# 2 b 20
# 3 c 30
# value
# letter
# a 10
# b 20
# c 30# 894-2、删除多层索引
# value
# number letter code
# 1 a X 10
# 2 b Y 20
# 3 c Z 30
# value
# code
# X 10
# Y 20
# Z 30
895、pandas.Index.dropna方法
895-1、语法
# 895、pandas.Index.dropna方法
pandas.Index.dropna(how='any')
Return Index without NA/NaN values.Parameters:
how
{‘any’, ‘all’}, default ‘any’
If the Index is a MultiIndex, drop the value when any or all levels are NaN.Returns:
Index
895-2、参数
895-2-1、how(可选,默认值为'any'):字符串,可选值有:
- 'any': 如果索引中有任何缺失值(NaN),则返回一个不包含这些缺失值的新索引。
- 'all': 如果索引中的所有元素都是缺失值,将返回该索引空的副本。
895-3、功能
从Index对象中删除缺失值,有助于在数据处理和分析时清理索引,使其只包含有效的(非缺失的)值。
895-4、返回值
返回一个新的Index对象,其中不包含已删除的缺失值(NaN),如果所有值都被删除(在'all'的情况下)或原索引中没有缺失值(在'any'的情况下),则返回的Index对象可能和原索引相同或为空。
895-5、说明
无
895-6、用法
895-6-1、数据准备
无
895-6-2、代码示例
# 895、pandas.Index.dropna方法
import pandas as pd
import numpy as np
# 创建一个含有缺失值的索引
index = pd.Index([1, 2, np.nan, 4, 5, np.nan])
# 删除任何缺失值
new_index_any = index.dropna(how='any')
print(new_index_any)
# 如果删除所有缺失值
new_index_all = index.dropna(how='all')
print(new_index_all)
895-6-3、结果输出
# 895、pandas.Index.dropna方法
# Index([1.0, 2.0, 4.0, 5.0], dtype='float64')
# Index([1.0, 2.0, 4.0, 5.0], dtype='float64')