# Recovering a distribution after Gaussian noise is added

I have a large dataset (400k rows) in which I suspect the data has been obfuscated by the addition of a Gaussian distribution. My guess is that some of the data had categorical variables (based on the description of the data), or some other distribution within the data (e.g. bimodal).

For example, the data may look something like:

signal = np.random.randint(low=5, high=10, size=50000)
noise = np.random.normal(loc=8, scale=5, size=350000)
final_data = np.concatenate([signal, noise])


If it was possible to estimate the mean & standard deviation of the noise distribution (through some optimisation), how could I extract the signal from the noise?

EDIT: The spread of the noise distribution is wide enough to effectively hide the categorical data on visual inspection.

My initial idea was to compare the CDF of a perfect Gaussian against the data to look for differences but I'm not sure how to extract the signal using this method