Pandas创建带有多级索引的DataFrame

Pandas创建带有多级索引的DataFrame

在本文中,我们将介绍如何使用Pandas创建带有多级索引的DataFrame,这在数据分析和处理中非常常见。

阅读更多:Pandas 教程

什么是多级索引?

多级索引是Pandas中一种复合索引形式,在一张数据表中,由多个索引索引值组成的数据结构。多级索引可以让我们在进行数据分析时更加方便地筛选、聚合和组合数据。

例如,我们可以通过多级索引对一张记录多个公司在不同州的销售额的数据表进行筛选,计算某个州多个公司的总销售额。

创建一个带多级索引的DataFrame

为了演示如何创建一个多级索引的DataFrame,我们将创建一个记录不同城市温度、湿度和风速的数据表。接下来我们将对数据进行不同方式的操作,以便更好的理解多级索引的用处。

我们首先需要导入Pandas库。

import pandas as pd

我们可以通过创建两个列表来创建多级索引:

# 创建城市和日期数组
cities = ['Beijing', 'Beijing', 'Shanghai', 'Shanghai', 'Guangzhou', 'Guangzhou']
dates = pd.date_range('20220101', periods=6)

# 创建多级索引
multi_index = pd.MultiIndex.from_product([cities, dates], names=['City', 'Date'])

在这里,我们使用pd.date_range函数创建日期数组,从2022年1月1日开始,共6天。接下来我们使用pd.MultiIndex.from_product函数创建一个叫做“multi_index”的多级索引,它由“城市”和“日期”两个索引组成。

我们可以使用生成的多级索引来创建一个空的DataFrame。

# 创建空的DataFrame
df = pd.DataFrame(columns=['Temperature', 'Humidity', 'Wind Speed'], index=multi_index)

上述代码创建了一个新的DataFrame,用于记录不同城市在不同日期的温度、湿度和风速。我们可以使用head()函数来查看DataFrame的前5行。

# 查看前5行数据
print(df.head())

输出结果为:

                   Temperature Humidity Wind Speed
City     Date                                     
Beijing  2022-01-01        NaN      NaN        NaN
         2022-01-02        NaN      NaN        NaN
Shanghai 2022-01-01        NaN      NaN        NaN
         2022-01-02        NaN      NaN        NaN
Guangzhou2022-01-01        NaN      NaN        NaN

我们可以看到,新的DataFrame是空的,每一列都是NaN。我们现在可以添加一些数据到DataFrame中来演示如何使用多级索引。

# 添加数据
df.loc[('Beijing', '2022-01-01'), :] = [0, 10, 2]
df.loc[('Beijing', '2022-01-03'), :] = [2, 8, 3]
df.loc[('Shanghai', '2022-01-02'), :] = [3, 7, 1]
df.loc[('Guangzhou', '2022-01-01'), :] = [5, 12, 4]
df.loc[('Guangzhou', '2022-01-03'), :] = [4, 10, 5]
df.loc[('Guangzhou', '2022-01-05'), :] = [6, 9, 4]

代码中,我们使用loc函数添加数据。每一行的数据都由城市和日期组成,我们使用tuple的形式指定多级索引的值,同时使用:符号指定所有列。我们可以使用head()函数来查看制作好的数据表。

# 查看数据
print(df.head())

输出结果为:

                   Temperature Humidity Wind Speed
City     Date                                     
Beijing  2022-01-01          0       10          2.0
         Beijing  2022-01-02          NaN      NaN        NaN
                  2022-01-03            2        8          3
         Guangzhou2022-01-01            5       12          4
                  2022-01-03            4       10          5
                  2022-01-05            6        9          4

我们现在可以演示如何使用多级索引进行数据分析和筛选。

处理带有多级索引的DataFrame

我们可以使用多种方式使用多级索引来分析此数据表。我们可以通过多级索引的值来筛选数据,计算某个城市在某个日期的平均温度,或者计算某个日期每个城市的平均湿度等等。

1. 筛选数据

我们可以使用loc函数来根据多级索引中的某些值来筛选数据。

例如,我们可以使用下面的代码来获取2022年1月1日所有城市的记录。

# 获取2022年1月1日所有城市的记录
df.loc[(slice(None), '2022-01-01'), :]

上述代码使用slice(None)指定了第一级索引的所有值,在本例中我们只关心第二级索引的值为2022年1月1日的所有数据,因此使用后面的'2022-01-01'而不是slice(None)来代表第二级索引的值。

输出结果为:

           Temperature Humidity Wind Speed
City                                     
Beijing              0       10          2
Shanghai          NaN      NaN        NaN
Guangzhou            5       12          4

在这里,我们可以看到只有第一级索引值为Beijing、Shanghai和Guangzhou的记录会被输出。

2. 计算数据

我们可以使用Pandas函数来对多级索引的数据进行计算。例如,我们可以使用mean函数计算不同城市不同日期的平均温度。

# 计算不同城市不同日期的平均温度
df['Temperature'].mean(level='City')

运行结果为:

City
Beijing      1.0
Shanghai     3.0
Guangzhou    5.0
Name: Temperature, dtype: float64

我们可以看到,此代码计算Beijing、Shanghai和Guangzhou三个城市的平均温度,返回了一个名叫“Temperature”的Pandas Series。

我们还可以计算同一日期不同城市的平均湿度、风速等。

# 计算同一日期不同城市的平均湿度、风速等
df.groupby('Date').mean()

运行结果为:

            Temperature  Humidity  Wind Speed
Date                                         
2022-01-01     2.5            11         3.0
2022-01-02     3.0            7          1.0
2022-01-03     3.0            9          4.0
2022-01-04     NaN            NaN        NaN
2022-01-05     6.0            9          4.0
2022-01-06     NaN            NaN        NaN

我们可以计算每个日期记录的平均值,这里返回了平均温度、平均湿度和平均风速值。

我们还可以使用Pandas的其他函数来进行分组、聚合等操作。

总结

Pandas是一个非常强大的Python库,它提供了很多用于数据处理和分析的工具。在本文中,我们讨论了如何使用Pandas创建带有多级索引的DataFrame,以及如何使用多级索引对DataFrame进行分析、筛选和计算。

使用Pandas,我们可以高效地处理大量的数据,提高工作效率。希望这篇文章对你有所帮助,如果你想深入了解Pandas的其他功能,可以查看Pandas官方文档和示例代码。

同时,我们在使用多级索引时需要注意一些细节。例如,我们需要正确指定多级索引的名称,并且使用loc函数时需要使用slice(None)来指定所有值。

总之,Pandas的多级索引是一个强大的工具,可以帮助我们更有效地分析和处理数据。希望您在使用Pandas时能够熟练掌握多级索引的使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程