迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Pandas 中使用 stack() 和 unstack() 函数重塑 DataFrame

作者:迹忆客 最近更新:2024/04/24 浏览次数:

Pandas 是 Python 中的高级数据分析工具或包扩展。当我们在 SQL 表、电子表格或异构列中有数据时,强烈建议使用 Pandas。

本文探讨了 Pandas 中堆栈和取消堆栈的基本概念。在 Pandas 中,stacking 和 unstacking 被广泛用于改变正在考虑的 DataFrame 的形状。

让我们看看这个方法的实际效果。首先,我们将创建一个虚拟 DataFrame dates_data 以及几行。

import pandas as pd

index = pd.date_range("2013-1-1", periods=100, freq="30Min")
dates_data = pd.DataFrame(data=list(range(100)), columns=["value"], index=index)
dates_data["value2"] = "Alpha"
dates_data["value2"].loc[0:10] = "Beta"

上面的代码块创建了一个 DataFramedates_data,其中包含日期和名为 valuevalue2 的两列。查看数据中的条目,我们使用以下代码:

print(dates_data)

输出:

                     value value2
2013-01-01 00:00:00      0   Beta
2013-01-01 00:30:00      1   Beta
2013-01-01 01:00:00      2   Beta
2013-01-01 01:30:00      3   Beta
2013-01-01 02:00:00      4   Beta
...                    ...    ...
2013-01-02 23:30:00     95  Alpha
2013-01-03 00:00:00     96  Alpha
2013-01-03 00:30:00     97  Alpha
2013-01-03 01:00:00     98  Alpha
2013-01-03 01:30:00     99  Alpha

正如我们所看到的,我们有 100 个不同的条目,每个条目在 30 分钟的间隔后设置的时间相同。

此外,还创建了两个名为 valuevalue2 的附加列,其中我们将一些值设置为数字,而将其他值设置为 AlphaBeta


Pandas 中的 stack()unstack() 函数

我们可以借助 Pandas 中名为 stack()unstack() 的两个函数来更改名为 dates_data 的 DataFrame。这个函数可以帮助我们改变 DataFrame 的方向,使行变成列,列相应地变成行。

我们将尝试将 DataFrame 中的 valuevalue2 更改为行,并将其中的值更改为行中的条目。


使用 unstack() 函数来改变我们的 DataFrame

命令:

dates_data = dates_data.unstack()
print(dates_data)

输出:

value   2013-01-01 00:00:00        0
        2013-01-01 00:30:00        1
        2013-01-01 01:00:00        2
        2013-01-01 01:30:00        3
        2013-01-01 02:00:00        4
                               ...
value2  2013-01-02 23:30:00    Alpha
        2013-01-03 00:00:00    Alpha
        2013-01-03 00:30:00    Alpha
        2013-01-03 01:00:00    Alpha
        2013-01-03 01:30:00    Alpha
Length: 200, dtype: object

现在,我们已经成功地改变了我们的数据,现在我们将列作为数据中的行条目。


使用 unstack() 函数来改变我们的 DataFrame

命令:

dates_data = dates_data.stack()
print(dates_data)

输出:

2013-01-01 00:00:00  value         0
                     value2     Beta
2013-01-01 00:30:00  value         1
                     value2     Beta
2013-01-01 01:00:00  value         2
                               ...
2013-01-03 00:30:00  value2    Alpha
2013-01-03 01:00:00  value        98
                     value2    Alpha
2013-01-03 01:30:00  value        99
                     value2    Alpha
Length: 200, dtype: object

列值现在在我们的 DataFrame 中堆叠为行。

因此,借助 Pandas 中的 unstacking 技术,我们可以根据需要在需要时有效地过滤数据,并转换 DataFrame 的外观,以便以更好的方式可视化数据。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便