Python實現(xiàn)對Excel文件中不在指定區(qū)間內(nèi)的數(shù)據(jù)加以去除的方法
本文介紹基于Python語言,讀取Excel表格文件,基于我們給定的規(guī)則,對其中的數(shù)據(jù)加以篩選,將不在指定數(shù)據(jù)范圍內(nèi)的數(shù)據(jù)剔除,保留符合我們需要的數(shù)據(jù)的方法。
首先,我們來明確一下本文的具體需求。現(xiàn)有一個Excel表格文件(在本文中我們就以 .csv
格式的文件為例),如下圖所示。
其中,Excel表格文件具有大量的數(shù)據(jù),每一列表示某一種屬性,每一行表示某一個樣本;我們需要做的,就是對于其中的部分屬性加以數(shù)據(jù)篩選——例如,我們希望對上圖中第一列的數(shù)據(jù)進行篩選,將其中大于 2
或小于 -1
的部分選出來,并將每一個所選出的單元格對應(yīng)的行直接刪除;同時,我們還希望對其他的屬性同樣加以篩選,不同屬性篩選的條件也各不相同,但都是需要將不符合條件的單元格所在的整行都刪除。最終,我們保留下來的數(shù)據(jù),就是符合我們需要的數(shù)據(jù),此時我們需要將其保存為一個新的Excel表格文件。
明白了需求,我們即可開始代碼的撰寫;本文用到的具體代碼如下所示。
# -*- coding: utf-8 -*- """ Created on Wed Jun 7 15:40:50 2023 @author: fkxxgis """ import pandas as pd original_file = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/23_Train_model_NoH/Train_Model_1_NoH.csv" result_file = "E:/01_Reflectivity/99_Model_Training/00_Data/02_Extract_Data/23_Train_model_NoH/Train_Model_1_NoH_New.csv" df = pd.read_csv(original_file) df = df[(df["inf"] >= -0.2) & (df["inf"] <= 18)] df = df[(df["NDVI"] >= -1) & (df["NDVI"] <= 1)] df = df[(df["inf_dif"] >= -0.2) & (df["inf_dif"] <= 18)] df = df[(df["NDVI_dif"] >= -2) & (df["NDVI_dif"] <= 2)] df = df[(df["soil"] >= 0)] df = df[(df["inf_h"] >= -0.2) & (df["inf_h"] <= 18)] df = df[(df["ndvi_h"] >= -1) & (df["ndvi_h"] <= 1)] df = df[(df["inf_h_dif"] >= -0.2) & (df["inf_h_dif"] <= 18)] df = df[(df["ndvi_h_dif"] >= -1) & (df["ndvi_h_dif"] <= 1)] df.to_csv(result_file, index = False)
下面是對上述代碼每個步驟的解釋:
- 導入必要的庫:導入了
pandas
庫,用于數(shù)據(jù)處理和操作。 - 定義文件路徑:定義了原始文件路徑
original_file
和結(jié)果文件路徑result_file
。 - 讀取原始數(shù)據(jù):使用
pd.read_csv()
函數(shù)讀取原始文件數(shù)據(jù),并將其存儲在 - DataFrame對象
df
中。 - 數(shù)據(jù)篩選:對DataFrame對象
df
進行多個條件的篩選操作,使用了邏輯運算符&
和比較運算符進行條件組合。例如,其中的第一行df["inf"] >= -0.2
和df["inf"] <= 18
就表示篩選出"inf"
列的值在-0.2
到18
之間的數(shù)據(jù);第二行df["NDVI"] >= -1
和df["NDVI"] <= 1
則表示篩選出"NDVI"
列的值在-1
到1
之間的數(shù)據(jù),以此類推。 - 保存結(jié)果數(shù)據(jù):使用
to_csv()
函數(shù)將篩選后的DataFrame對象df
保存為新的.csv
文件,保存路徑為result_file
,并設(shè)置index=False
以避免保存索引列。
當然,如果我們需要對多個屬性(也就是多個列)的數(shù)據(jù)加以篩選,除了上述代碼中的方法,我們還可以用如下所示的代碼,較之前述代碼會更方便一些。
result_df = result_df[(result_df["blue"] > 0) & (result_df["blue"] <= 1) & (result_df["green"] > 0) & (result_df["green"] <= 1) & (result_df["red"] > 0) & (result_df["red"] <= 1) & (result_df["inf"] > 0) & (result_df["inf"] <= 1) & (result_df["NDVI"] > -1) & (result_df["NDVI"] < 1) & (result_df["inf_dif"] > -1) & (result_df["inf_dif"] < 1) & (result_df["NDVI_dif"] > -2) & (result_df["NDVI_dif"] < 2) & (result_df["soil"] >= 0) & (result_df["NDVI_dif"] > -2) & (result_df["NDVI_dif"] < 2) & (result_df["inf_h_dif"] > -1) & (result_df["inf_h_dif"] < 1) & (result_df["ndvi_h_dif"] > -1) & (result_df["ndvi_h_dif"] < 1)]
上述代碼可以直接對DataFrame對象加以一次性的篩選,不用每篩選一次就保存一次了。
運行本文提及的代碼,我們即可在指定的結(jié)果文件夾下獲得數(shù)據(jù)篩選后的文件了。
至此,大功告成。
以上就是Python實現(xiàn)對Excel文件中不在指定區(qū)間內(nèi)的數(shù)據(jù)加以去除的方法的詳細內(nèi)容,更多關(guān)于Python讀取Excel文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
從零開始的TensorFlow+VScode開發(fā)環(huán)境搭建的步驟(圖文)
這篇文章主要介紹了從零開始的TensorFlow+VScode開發(fā)環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08python調(diào)用另外一個py文件中函數(shù)的具體步驟
這篇文章主要給大家介紹了關(guān)于python調(diào)用另外一個py文件中函數(shù)的具體步驟,要在一個Python文件中調(diào)用其他Python文件中的方法,可以使用Python的模塊導入功能,需要的朋友可以參考下2023-11-11Python?Jupyter?Notebook導包報錯問題及解決
在conda環(huán)境中安裝包后,Jupyter?Notebook導入時出現(xiàn)ImportError,可能是由于包版本不對應(yīng)或版本太高,解決方法包括卸載并重新安裝出錯的包,或安裝該包的其他版本,此外,確保在正確的環(huán)境中安裝ipykernel,并使用正確的命令添加和更改kernel2025-02-02python mysql實現(xiàn)學生成績管理系統(tǒng)
這篇文章主要為大家詳細介紹了python mysql實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10