Maneira pitônica de detectar outliers em dados de observação unidimensionais

Para os dados fornecidos, desejo definir os valores externos (definidos pelo nível de confidencialidade de 95% ou função quantil de 95% ou qualquer coisa necessária) como valores nan. A seguir estão os meus dados e código que estou usando no momento. Eu ficaria feliz se alguém pudesse me explicar mais.

import numpy as np, matplotlib.pyplot as plt

data = np.random.rand(1000)+5.0

plt.plot(data)
plt.xlabel('observation number')
plt.ylabel('recorded value')
plt.show()

questionAnswers(5)

yourAnswerToTheQuestion