我正在研究用于開發神經網路回歸模型的資料預處理。為此,我有原始資料,其中一些站 ID 和相對于該站 ID,有比任何整數或實數更多的空白或 NaN 值。那么我將如何處理它。我應該簡單地洗掉它嗎?如果是,那么我將如何找到這些站 ID 并洗掉這些行。
station_Id Avg_temp Max_Temp rel_hum avg wind
105 0 1.4
198 0 1 8.4
788 122 7 4 47
上表只是我資料集的一小部分。我有 164040 行 × 12 列。我怎樣才能找到這些行?
uj5u.com熱心網友回復:
df.dropna(subset="Avg_temp", inplace = True)
將洗掉行 where Avg_temp == NaN.
df["Avg_temp"].fillna(value = df["Avg_temp"].mean(), inplace = True)
將用平均溫度填充NaN值。Avg_temp同樣對于中位數等。
uj5u.com熱心網友回復:
資料不完整,因此最終將其用作神經網路的輸入是沒有意義的。我建議洗掉不完整的行。 df.dropna()
https://www.developintelligence.com/blog/2017/08/data-cleaning-pandas-python/
uj5u.com熱心網友回復:
首先,您應該考慮某種特征工程,以便您擁有可以為您的模型提供正確信號的欄位。除了降維或類不平衡等其他技術。這是向我們展示的資料的經驗問題。
關于洗掉零行,請參見:Drop rows with all zeros in pandas data frame
uj5u.com熱心網友回復:
要洗掉實際資料值少于特定數量的行,請df.dropna使用thresh. 我添加了另一列,因此我可以保留所有資料值超過 3 個的行。
import pandas as pd
import numpy as np
df = pd.DataFrame({"station_Id": [105, 198, 788], "Avg_temp": [0, np.nan, 122], "Max_Temp": [np.nan, 0, 7],
"rel_hum": [np.nan, 1, 4], "avg wind": [1.4, 8.4, 47], "another_column": [np.nan, np.nan, 5]})
df.set_index("station_Id", inplace=True)
my_threshold = int(np.ceil(df.shape[1]/2))
print(df.shape[0]) # prints 3
df.dropna(thresh=3, inplace=True)
print(df.shape[0]) # prints 2
但是,對于機器學習,您應該嘗試通過插補來填充缺失的資料。例如,您可以使用其他觀測值的平均值填充缺失資料。與您所在領域的專家討論任何最有意義的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441259.html
上一篇:洗掉python資料框上的字符,每行洗掉的字符數不同
下一篇:資料框在多行中分解串列列
