Я пытаюсь обработать некоторые данные в python, используя pandas для создания фрейма данных, но у меня возникают проблемы с манипулированием данными внутри каждого столбца. По сути, мне нужно для каждого столбца в фрейме данных, который не является [Глубина], проверять каждое значение в столбце, если оно выше 95-го процентиля. Если это так, значение должно быть заменено средним значением одного предыдущего и следующего.
Я хотел использовать функции для выполнения первой части, а затем выполнить итерацию для каждого столбца ... но он на самом деле не работает, и я не уверен, почему.
Код на данный момент
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
'''
Function do remove the "spikes", data points above the 95th percentile
'''
def removespikes (x):
perc = np.percentile(x, 95)
for i in x:
if i == 0 or x <= perc:
pass
else:
i = mean(i-1, i+1)
return x
df=pd.read_excel(r"Dati.xlsx")
for column in df:
if column == 'Depth':
pass #there is no need to do it for the column Depth
else:
col = df[column]
col = removespikes(col)
plt.plot(df['Depth'], x, color=colline,
marker='o', ms=1.0,
linestyle='-', lw=0.2)
plt.savefig('{}.png'.format(column))
plt.clf()
Последняя часть - это часть построения графика, но это не вызывает у меня никаких проблем .. . любой совет? Я знаю, что есть более простой способ сделать это (на этот раз, используя сам excel), но поскольку я пытаюсь выучить python, я пытаюсь заставить себя использовать его ...
Данные Я использую, можно найти в этом Dropbox ссылка