パンダで一連のデータを平均化しようとしています。csv ファイルからのデータ。「トラック」というシリーズがあります。以前の段階で、このメソッドdropna()
を使用して、csv ファイルを読み取ったときにインポートされたいくつかの空白行を取り除きました。
列の5行以上を平均したい方法を使用します。現在の値の前の 2 行、現在の値、および現在の値の後の 2 行を使用して平均を取りたいため、rolling_mean メソッドは使用できません。
ラベルも同様に NaN データが削除されたデータに到達すると、問題が発生します。
def get_data(filename):
'''function to read the data form the input csv file to use in the analysis'''
with open(filename, 'r') as f:
reader = pd.read_csv(f, sep=',', usecols=('candidate',' final track' ,' status'))
print reader[0:20]
reader=reader.dropna()
print reader[0:20]
return reader
def relative_track(nb):
length= len(reader)
track=current_tracks.loc[:,' final track']
for el in range(2, length):
means=pd.stats.moments.rolling_mean(track, 5)
print means
これにより、出力が得られます(15、16のメモラベルは2番目の印刷では欠落しています):
candidate final track status
0 1 719 *
1 2 705 *
2 3 705 *
3 4 706 *
4 5 704 *
5 1 708 *
6 2 713 *
7 3 720 *
8 4 726 *
9 5 729 *
10 1 745 *
11 2 743 *
12 3 743 *
13 4 733 *
14 5 717 *
15 NaN NaN NaN
16 *** Large track split NaN NaN
17 1 714 *
18 2 695 *
19 3 690 *
candidate final track status
0 1 719 *
1 2 705 *
2 3 705 *
3 4 706 *
4 5 704 *
5 1 708 *
6 2 713 *
7 3 720 *
8 4 726 *
9 5 729 *
10 1 745 *
11 2 743 *
12 3 743 *
13 4 733 *
14 5 717 *
17 1 714 *
18 2 695 *
19 3 690 *
20 4 671 *
21 5 657 *
しかし、2番目の関数を使用して平均を計算しようとすると、エラーが発生します:
raise KeyError("stop bound [%s] is not in the [%s]" % (key.stop,self.obj._get_axis_name(axis)))
KeyError: 'stop bound [15] is not in the [index]'
これは、インデックス 15 がないためです。誰かがそれを助けることができれば、それは素晴らしいことです.