3

欠落しているデータ ポイントをテキストの各列の平均値に置き換えたいと思います。

だから、私の考えは:

  1. テキスト ファイルから各列を読み取る
  2. 各列の平均を計算する
  3. 各列の nan を計算された平均値に置き換えます
  4. それらを新しいテキストファイルに書き戻します

ステップ 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)

ご覧のとおり、ここでの問題は、文字列のみを扱っているため、「replace」コマンドで nan を mean に置き換えることに関連しています。助けや提案があれば本当に感謝します。私のデータの一部は以下のようになります

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

これらのナンを各列の平均値に置き換えたいと思います。

4

3 に答える 3

2

文字列をその場で置き換えるreplaceわけではないことに注意してください。次のようにする必要があります。

a1 = a1.replace("nan", str(y1))
于 2013-04-09T21:49:49.420 に答える