删除数据集的 NaN
Remove NaN for the dataset
给定样本 df:
p = [[1.234,1], [2.2134,1.2365], [1.1234,2.5432]]
q = [[2,2], [0,1], [2,4]]
p[p == 22] = np.nan
我可以通过以下操作从 p
值中删除 NaN
:
p = np.array([i for i in p if np.any(np.isfinite(i))], np.float64)
q = np.array(q, np.float64)
我可以做任何循环来检查是否有 NaN
并将其删除吗?
但这是给一对夫妇的。如果我有这样的数据集怎么办(真实数据要大得多(106,1900)
)
df =
1 1.1 2 2.1 3 3.1 4 4.1 5 5.1
0 43.1024 6.7498 NaN NaN NaN NaN NaN NaN NaN NaN
1 46.0595 1.6829 25.0695 3.7463 NaN NaN NaN NaN NaN NaN
2 25.0695 5.5454 44.9727 8.6660 41.9726 2.6666 84.9566 3.8484 44.9566 1.8484
3 35.0281 7.7525 45.0322 3.7465 14.0369 3.7463 NaN NaN NaN NaN
4 35.0292 7.5616 45.0292 4.5616 23.0292 3.5616 45.0292 NaN NaN
例如尝试(为了用 0 填充所有 NaN-s):
df.fillna(0)
参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html
您可以使用每列的平均值或均值来填充您的 NaN 值
df.fillna(df.mean())
给定样本 df:
p = [[1.234,1], [2.2134,1.2365], [1.1234,2.5432]]
q = [[2,2], [0,1], [2,4]]
p[p == 22] = np.nan
我可以通过以下操作从 p
值中删除 NaN
:
p = np.array([i for i in p if np.any(np.isfinite(i))], np.float64)
q = np.array(q, np.float64)
我可以做任何循环来检查是否有 NaN
并将其删除吗?
但这是给一对夫妇的。如果我有这样的数据集怎么办(真实数据要大得多(106,1900)
)
df =
1 1.1 2 2.1 3 3.1 4 4.1 5 5.1
0 43.1024 6.7498 NaN NaN NaN NaN NaN NaN NaN NaN
1 46.0595 1.6829 25.0695 3.7463 NaN NaN NaN NaN NaN NaN
2 25.0695 5.5454 44.9727 8.6660 41.9726 2.6666 84.9566 3.8484 44.9566 1.8484
3 35.0281 7.7525 45.0322 3.7465 14.0369 3.7463 NaN NaN NaN NaN
4 35.0292 7.5616 45.0292 4.5616 23.0292 3.5616 45.0292 NaN NaN
例如尝试(为了用 0 填充所有 NaN-s):
df.fillna(0)
参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html
您可以使用每列的平均值或均值来填充您的 NaN 值
df.fillna(df.mean())