BMON中文网
BMON中文网
领取MOLI红包
你的位置:BMON中文网 > OXT中文网 > Python实现多条件筛选Excel数据并批量绘制直方图

Python实现多条件筛选Excel数据并批量绘制直方图

发布日期:2025-01-03 18:57    点击次数:83
本文介绍基于Python,读取Excel数据,以一列数据的值为标准,对这一列数据处于指定范围的所有行,再用其他几列数据数值,加以筛选与剔除;同时,对筛选与剔除前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法。 首先,我们来明确一下本文的具体需求。现有一个Excel表格文件,在本文中我们就以 .csv 格式的文件为例;其中,如下图所示,这一文件中有一列(在本文中也就是 days 这一列)数据,我们将其作为基准数据,希望首先取出 days 数值处于 0 至 45 、 320 至 365 范围内的所有样本(一行就是一个样本),进行后续的操作。 其次,对于取出的样本,再依据其他 4 列(在本文中也就是 blue_dif 、 green_dif 、 red_dif 与 inf_dif 这 4 列)数据,将这 4 列数据不在指定数值区域内的行删除。在这一过程中,我们还希望绘制在数据删除前、后,这 4 列(也就是 blue_dif 、 green_dif 、 red_dif 与 inf_dif 这 4 列)数据各自的直方图,一共是 8 张图。最后,我们还希望将删除上述数据后的数据保存为一个新的Excel表格文件。 知道了需求,我们就可以撰写代码。本文所用的代码如下所示。 首先,我们通过 pd.read_csv 函数从指定路径的 .csv 文件中读取数据,并将其存储在名为 df 的DataFrame中。 接下来,通过一系列条件筛选操作,从原始数据中选择满足特定条件的子集。具体来说,我们筛选出了在 blue_dif 、 green_dif 、 red_dif 与 inf_dif 这 4 列中数值在一定范围内的数据,并将这些数据存储在名为 blue_original 、 green_original 、 red_original 和 inf_original 的新Series中,这些数据为我们后期绘制直方图做好了准备。 其次,创建一个名为 mask 的布尔掩码,该掩码用于筛选满足条件的数据。在这里,它筛选出了 days 列的值在 0 到 45 之间或在 320 到 365 之间的数据。 随后,我们使用 apply 函数和 lambda 表达式,对于 days 列的值在 0 到 45 之间或在 320 到 365 之间的行,如果其 blue_dif 、 green_dif 、 red_dif 与 inf_dif 这 4 列的数据不在指定范围内,那么就将这列的数据随机设置为NaN, p =[0.9, 0.1] 则是指定了随机替换为NaN的概率。这里需要注意,如果我们不给出 p =[0.9, 0.1] 这样的概率分布,那么程序将依据均匀分布的原则随机选取数据。 最后,我们使用 dropna 函数,删除包含NaN值的行,从而得到筛选处理后的数据。其次,我们依然根据这四列的筛选条件,计算出处理后的数据的子集,存储在 blue_new 、 green_new 、 red_new 和 inf_new 中。紧接着,使用Matplotlib创建直方图来可视化原始数据和处理后数据的分布;这些直方图被分别存储在 8 个不同的图形中。 代码的最后,将处理后的数据保存为新的 .csv 文件,该文件路径由 result_file_path 指定。 运行上述代码,我们将得到 8 张直方图,如下图所示。且在指定的文件夹中看到结果文件。 至此,大功告成。 以上就是Python实现多条件筛选Excel数据并批量绘制直方图的详细内容,更多关于Python绘制直方图的资料请关注脚本之家其它相关文章!