关键词

使用堆叠、解叠和熔化方法重塑pandas数据框架

使用堆叠、解叠和熔化方法可以重塑 Pandas 数据框架。这些方法可以使得数据的表述更加简洁,也方便进行数据分析和可视化。下面就具体介绍这些方法的使用攻略。

堆叠(stack)和解叠(unstack)

堆叠方法可以把数据框架中的列“压缩”成一列,而解叠方法则可以把“压缩”后的列重新展开。下面通过一个示例来说明其应用。

import pandas as pd

data = {
    "year": [2010, 2011, 2012, 2010, 2011, 2012],
    "quarter": ["Q1", "Q2", "Q3", "Q1", "Q2", "Q3"],
    "revenue": [100, 200, 150, 250, 300, 200]
}

df = pd.DataFrame(data)

print(df)

这个示例创建了一个包含年份、季度和收入的数据框架。现在我们想要把年份和季度作为索引,把收入作为值。我们可以使用堆叠方法来实现:

stacked = df.set_index(["year", "quarter"])["revenue"].unstack()
print(stacked)

这个代码片段的第一行使用 set_index 方法把年份和季度作为索引,然后通过取出 revenue 列,再调用 unstack 方法实现堆叠操作。通过这个方法,我们把原来的数据框架“压缩”成了一个只包含收入信息的新数据框架。输出结果如下:

quarter   Q1   Q2   Q3
year                  
2010     100  250  NaN
2011     200  300  150
2012     NaN  200  250

现在我们再来看一下解叠操作。假设我们想要把索引年份重新变成一列。我们可以使用下面的代码实现:

unstacked = stacked.reset_index().melt(id_vars=["year"], value_vars=["Q1", "Q2", "Q3"], var_name="quarter", value_name="revenue")
print(unstacked)

这个代码片段在执行前先把 stacked 数据框架重设索引,方便后面进行解叠操作。然后使用 melt 方法进行解叠,其中 id_vars 表示需要保留的列,value_vars 表示需要转换成值的列名,var_name 表示转换后新的列名,value_name 表示属性值的列名。输出结果如下:

   year quarter  revenue
0  2010      Q1    100.0
1  2011      Q1    200.0
2  2012      Q1      NaN
3  2010      Q2    250.0
4  2011      Q2    300.0
5  2012      Q2    200.0
6  2010      Q3      NaN
7  2011      Q3    150.0
8  2012      Q3    250.0

通过这个示例可以看出,堆叠和解叠操作可以方便地进行数据的重塑。

熔化(melt)

熔化(melt)方法可以把数据框架从“宽”变成“长”。宽数据框架表示每个元素都占一格,而长数据框架表示每个元素都占一行。下面通过一个示例来说明熔化方法的使用。

import pandas as pd

data = {
    "Name": ["Alice", "Bob"],
    "Math": [80, 90],
    "Science": [70, 95]
}

df = pd.DataFrame(data)

print(df)

这个示例创建了一个数据框架,包含姓名、数学成绩和科学成绩。现在我们想要把数学成绩和科学成绩合并成一个单列,并且新增一个列来区分它们。我们可以使用熔化方法来实现:

melted = df.melt(id_vars=["Name"], value_vars=["Math", "Science"], var_name="Subject", value_name="Score")
print(melted)

这个代码片段中,id_vars 表示需要保留的列,value_vars 表示需要转换成值的列名,var_name 表示转换后新的列名,value_name 表示属性值的列名。输出结果如下:

    Name  Subject  Score
0  Alice     Math     80
1    Bob     Math     90
2  Alice  Science     70
3    Bob  Science     95

可以看到,熔化操作把宽数据框架转换成了长数据框架,方便进行后续的数据分析和可视化。

到这里我们就完成了使用堆叠、解叠和熔化方法重塑 Pandas 数据框架的攻略。需要注意的是,在重新塑形(reshape)前,一定要对数据有一个清晰的认识和理解,以免出现不必要的错误。

本文链接:http://task.lmcjl.com/news/17498.html

展开阅读全文