Best averaging to convert 50Hz Chi data to one hour averages?
Essentially, you want to take your original signal and downsample it. Since you need to take care of aliasing before downsampling, you'd need to perform low-pass filtering of the signal.

Your original sampling frequency is $F_S=50Hz$, you want to downsample it to $1/h$ (1 per hour), which is $F_S/(60*60*50)$. So, your anti-aliasing filter needs to have cut-off frequency of $0.5/h$. After filtering you can just take every (50*60*60)th sample of the filtered sequence to have hourly averaged data. Note that downsampling to hourly averages requires, that the actual information in the signal does not vary too quick over time.

Code for some rudimentary filter design is below. Since your cutoff-frequency is so low, you need a very long filter to perform a good filtering. This is in tradeoff against calculation time.

Fs = 50
T = 24*60*60  # data of one day

cutoff = 0.5/(60*60)  # cutoff frequency

# Create some simulated measurement data
t = np.arange(0, T, 1/Fs)
x = np.sin(2*np.pi*t*3/(60*60*24))  # frequency: 3 periods/24 hours
y = x + 0.1*np.random.randn(*x.shape)

b = signal.firwin(15*3611, cutoff, nyq=Fs/2)
a=1

plt.subplot(1,2,1)
plt.plot(b)
plt.subplot(122)
w, h = signal.freqz(b, a, 32*4096)
plt.plot(w, 20*np.log10(abs(h)), '-x')
plt.xlim((0, 3/(60*60)))
plt.axvline(cutoff)




r = np.convolve(y, b)
r = r[:len(y)]

plt.plot(t, y)
plt.plot(t, r)
r_down = r[::50*60*60]
t_down = t[::50*60*60]

plt.stem(t_down, r_down)




As you can see, I get accurate downsampled data.