pandas获取标签的种类数
时间: 2023-08-15 08:13:28 浏览: 212
要获取Pandas DataFrame中某一列的标签种类数,你可以使用`nunique()`函数。这个函数将返回指定列中不同标签的数量。以下是一个示例代码:
```
import pandas as pd
# 创建一个示例DataFrame
data = {'A': ['apple', 'banana', 'apple', 'orange', 'banana'],
'B': ['red', 'green', 'green', 'blue', 'red']}
df = pd.DataFrame(data)
# 获取'A'列的标签种类数
num_categories = df['A'].nunique()
print("标签种类数:", num_categories)
```
输出结果将是:
```
标签种类数: 3
```
这表示'A'列有3个不同的标签种类。
相关问题
Pandas层级索引
### Pandas 多级索引使用方法教程
#### 创建多级索引对象
Pandas 提供了 `MultiIndex` 类型来处理多级索引的问题[^1]。下面是一个简单的例子展示如何创建一个多级索引的对象:
```python
import numpy as np
import pandas as pd
index = [('California', 2000), ('California', 2010),
('New York', 2000), ('New York', 2010),
('Texas', 2000), ('Texas', 2010)]
populations = [33871648, 37253956,
18976457, 19378102,
20851820, 25145561]
# 构建Series并设置其索引为上述定义的元组列表形式
pop = pd.Series(populations, index=pd.MultiIndex.from_tuples(index))
print(pop)
```
这段代码会输出如下所示的结果,其中包含了两个级别的索引——州名和年份。
#### 切片查询操作
对于带有多个层次结构的数据集来说,可以利用这些额外的信息来进行更精确的选择。例如,要获取特定时间段内的记录,可以通过指定起始位置到结束位置之间的范围实现切片查询功能[^2]:
```python
# 查询从(California, 2010)至(Texas, 2000)之间所有的条目
slice_result = pop[('California', 2010):('Texas', 2000)]
print(slice_result)
# 获取所有2010年的数据项
year_2010_data = pop[pd.IndexSlice[:, 2010]]
print(year_2010_data)
```
这里展示了两种不同的方式来做筛选:一种是指定确切的位置区间;另一种则是通过 `pd.IndexSlice[]` 来选取某一层上的固定值作为条件。
#### 访问单层或多层标签
当需要单独访问某个级别中的唯一标识符时,可调用 `.get_level_values()` 方法,并传入相应的 level 参数值(即第几层),从而返回该层内全部唯一的标记集合[^3]:
```python
df = pop.unstack() # 将 Series 转换为 DataFrame 形式以便更好地理解 get_level_values 的作用
state_labels = df.index.get_level_values(0).unique()
years = df.columns.get_level_values(0).unique()
print(f'State Labels:\n{state_labels}\n')
print(f'Years:\n{years}')
```
此部分代码先将原始序列转换成了表格视图,再分别提取出行方向上的一级分类以及列方向上的时间戳信息。
python pandas 索引
### Python Pandas 索引使用方法
#### 创建 DataFrame 并设置索引
为了更好地理解如何处理索引,在创建 `DataFrame` 的时候可以选择指定列作为行标签即索引。如果未特别指明,默认情况下会自动生成整数类型的索引。
```python
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# 设置 City 列为索引
df.set_index('City', inplace=True)
print(df)
```
#### 访问带有多重索引的数据结构
对于具有复杂层次化索引的数据集,可以通过 `.loc[]`, `.iloc[]` 或者更高级的选择器来进行访问。特别是当面对多层索引(`MultiIndex`)时,`.xs()` 方法允许提取特定级别的子集而无需遍历整个表格。
```python
arrays = [['bar', 'bar', 'baz', 'baz'], ['one', 'two', 'one', 'two']]
index = pd.MultiIndex.from_arrays(arrays, names=('first', 'second'))
s = pd.Series([1.0, 2.0, 3.0, 4.0], index=index)
# 获取 first 层等于 bar 的所有元素
result_bar = s.xs('bar', level='first')
print(result_bar)
```
#### 对带有 MultiIndex 的数据框应用聚合操作
在拥有多个维度的情况下,可能希望基于某些级别上的唯一组合计算统计数据。这通常涉及到 `groupby()`, 结合其他函数如 `sum()`, `mean()`, 和 `size()` 来实现期望的结果。
```python
df_multi = df.copy()
df_multi.index = pd.MultiIndex.from_product([[‘East’, ‘West’], df_multi.index])
# 按照第一个层级分组求平均年龄
average_age_by_region = df_multi.groupby(level=0)['Age'].mean()
print(average_age_by_region)
```
#### 将分类变量转化为虚拟/指示变量
有时需要将类别型特征编码成数值形式以便于后续分析工作。此时可利用 `pd.get_dummies()` 函数轻松完成此任务[^2]。
```python
dummies_cities = pd.get_dummies(df.reset_index(), columns=['City'])
print(dummies_cities)
```
阅读全文