Pandas Masking
Pandas 是 Python 中的高级数据分析工具或包扩展。许多公司和组织需要高质量的数据分析才能大规模使用此工具。
数据分析师必须根据数据类型决定是否使用 pandas。当我们在 SQL 表、电子表格或异构列中有数据时,强烈建议使用 Pandas。
数据可以有序也可以无序,还支持时序数据。在本教程中,让我们了解如何在 pandas 中屏蔽数据。
屏蔽本质上是一种基于一个或多个条件过滤数据的方法。此掩码的输出通常是一个对象,该对象根据条件返回为 true
或 false
。
在 Pandas 中使用 dates_data
创建一个虚拟 DataFrame
它可以理解为 DataFrame 的高级 If-Else
方案。但是,我们将首先使用 dates_data
创建一个虚拟 DataFrame 以及几行。
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"
代码块创建一个 DataFrame,其中包含日期的行和名为 value
和 value2
的两列。要查看数据中的条目,我们使用以下代码:
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 分钟的间隔后设置的时间相同。
创建了两个名为 value
和 value2
的附加列,其中我们将一些值设置为数字,而将其他值设置为 Alpha
或 Beta
。
使用 Masking
过滤 Pandas 中的数据
屏蔽是 Pandas 中的一个高级概念,分析师试图根据特定条件过滤数据。
可以根据一个或多个条件过滤此数据。我们将尝试在这里详细探讨这些案例中的每一个。
让我们从过滤数据开始,这样我们只希望从我们的 DataFramedates_data
中获取条目。
mask = dates_data["value2"] == "Beta"
print(dates_data[mask])
输出:
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-01 02:30:00 5 Beta
2013-01-01 03:00:00 6 Beta
2013-01-01 03:30:00 7 Beta
2013-01-01 04:00:00 8 Beta
2013-01-01 04:30:00 9 Beta
我们在 dates_data
DataFrame 的 value2
列中有仅与 Beta
值相关的条目。
通过这种方式,我们可以创建一个掩码,然后将该掩码叠加在我们的数据上以过滤数据。这个掩码也可以理解为过滤掉某些数据的模板。
我们将从 value
列中过滤具有特定范围值的数据,并且仅从 dates_data
DataFrame 中的 value2
列中过滤 Beta
值。
mask = (dates_data["value2"] == "Beta") & (dates_data["value"] > 3)
print(dates_data[mask])
输出:
value value2
2013-01-01 02:00:00 4 Beta
2013-01-01 02:30:00 5 Beta
2013-01-01 03:00:00 6 Beta
2013-01-01 03:30:00 7 Beta
2013-01-01 04:00:00 8 Beta
2013-01-01 04:30:00 9 Beta
正如我们在上面的代码块中看到的那样,我们已经成功过滤了数据,因此我们在 value
列中只有大于 3 的值,而在 value2
列中只有值 Beta
。
因此,借助 Pandas 中的 Masking
技术,我们可以根据我们的要求并基于一个或多个条件有效地过滤数据。