我想用python中的每一列代替丟失的數據點。用平均值代替nan
所以,我的想法是:
- 閱讀從文本文件中的每一列
- 計算各列
- 在每列與計算的平均替換楠的平均
- 把它們寫回新的文本文件
我認爲我可以直到第2步,但是我對第3步和第4步有困難。 我的代碼如下;
for columns in (raw.strip().split() for raw in f):
a.append(columns[c])
x = np.array(a, float)
y = np.ma.masked_array(x,np.isnan(x))
y1 = np.mean(y)
a1 = ' '.join(a)
a1.replace("nan", "y1")
f1 = open("practice.txt", "w")
f1.write(a1)
正如你可以看到,這裏的問題是關係到均值與「替換」命令替換楠,因爲它是隻處理字符串。 我會很感激任何幫助或建議。 我的數據的部分看起來像下面
1.60566 nan 2.00755 2.32407
1.502 nan 1.36522 1.555
0.63333 nan 1.56102 2.08929
nan nan 0.87451 1.06667
2.5 nan 1.88889 1.0661
3.88197 nan 3.0875 2.75909
4.02692 nan 3.36154 3.92895
5.9907 nan 5.29535 5.82245
6.16111 2.67317 6.04074 6.25588
6.88269 2.62241 5.43958 6.07
5.92 2.48627 5.91818 6.75862
6.93429 6.17333 7.34 7.76538
8.25143 7.925 7.8087 8.725
8.1025 8.19429 8.11563 8.80937
8.12105 8.145 7.83889 8.37576
7.47292 8.65 8.35536 8.61081
8.10392 8.66032 8.74082 9.65484
10.03036 10.74727 10.634 10.50961
我想在每列平均值來替換那些NaN的。
A1是在你的代碼串 – Antimony 2013-04-09 21:41:37
能告訴你一個很小的數據文件來請解析一下? – chespinoza 2013-04-09 21:43:14
是的,你是對的銻。 – Isaac 2013-04-09 21:44:28