pandas设置二级索引
在pandas中,我们经常需要对数据进行分组和聚合分析。而设置二级索引可以帮助我们更方便地按照多个维度来进行数据处理。本文将详细介绍如何在pandas中设置二级索引,并且演示一些常见的操作。
设置二级索引
在pandas中,可以通过set_index
方法来设置二级索引。我们先创建一个示例DataFrame,然后演示如何设置二级索引。
import pandas as pd
data = {
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chengdu'],
'year': [2019, 2019, 2019, 2019, 2019, 2019],
'population': [2154, 2424, 1463, 1303, 981, 1665],
'gdp': [34276, 39000, 25811, 24219, 15768, 21091]
}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们可以得到以下输出:
city year population gdp
0 Beijing 2019 2154 34276
1 Shanghai 2019 2424 39000
2 Guangzhou 2019 1463 25811
3 Shenzhen 2019 1303 24219
4 Hangzhou 2019 981 15768
5 Chengdu 2019 1665 21091
接下来,我们将city
和year
作为二级索引:
df.set_index(['city', 'year'], inplace=True)
print(df)
运行以上代码,我们可以得到以下输出:
population gdp
city year
Beijing 2019 2154 34276
Shanghai 2019 2424 39000
Guangzhou 2019 1463 25811
Shenzhen 2019 1303 24219
Hangzhou 2019 981 15768
Chengdu 2019 1665 21091
可以看到,现在DataFrame的索引已经变为MultiIndex(多级索引)。
选择二级索引数据
在设置了二级索引之后,我们可以通过loc
方法选择二级索引的数据。例如,选择city
为Beijing
的所有数据:
print(df.loc['Beijing'])
运行以上代码,我们可以得到以下输出:
population gdp
year
2019 2154 34276
如果要选择多个城市的数据,可以使用元组:
print(df.loc[(['Beijing', 'Shanghai'], 2019), :])
运行以上代码,我们可以得到以下输出:
population gdp
city year
Beijing 2019 2154 34276
Shanghai 2019 2424 39000
重置索引
有时候我们需要把二级索引变回列,可以使用reset_index
方法。例如:
df_reset = df.reset_index()
print(df_reset)
运行以上代码,我们可以得到以下输出:
city year population gdp
0 Beijing 2019 2154 34276
1 Shanghai 2019 2424 39000
2 Guangzhou 2019 1463 25811
3 Shenzhen 2019 1303 24219
4 Hangzhou 2019 981 15768
5 Chengdu 2019 1665 21091
可以看到,现在索引已经重置为默认的整数索引。
统计分析二级索引数据
最常见的分析操作之一是对二级索引数据进行聚合统计,例如计算每个城市的总人口和总GDP。
city_stats = df.groupby(level=0).sum()
print(city_stats)
运行以上代码,我们可以得到以下输出:
population gdp
city
Beijing 2154 34276
Chengdu 1665 21091
Guangzhou 1463 25811
Hangzhou 981 15768
Shanghai 2424 39000
Shenzhen 1303 24219
可以看到,我们成功对每个城市的数据进行了求和。
小结
本文介绍了如何在pandas中设置二级索引,并且演示了如何选择二级索引数据、重置索引以及对二级索引数据进行统计分析。二级索引可以帮助我们更灵活地处理数据,特别适用于多维度数据分析的场景。