How can we normalize medical data extracted from patients to be used later in Electronic Health Records? Example for data: Age, temperature, time, blood test.

I have come across several papers that indicate the importance of normalizing health data, the applications and open sources softwares but couldn't find the rule to be used. I need to know the rule we should apply on this data which will be placed in Vertical Partitioned Databases.

Papers below,




  • 2
    $\begingroup$ Without more detail on just what you plan to do with the data this is going to be hard to answer. Whatever you do you should not transform the data before storage unless you are certain you can reverse the operation when you find you need the original values. $\endgroup$
    – mdewey
    Commented Jan 10, 2019 at 9:47
  • $\begingroup$ I will be running a clustering algorithm next on the data. Then apply association mining rules between vertical partitioned databases which include this data. $\endgroup$
    – MarJamil
    Commented Jan 10, 2019 at 16:50

1 Answer 1


I would normalise health data in the same way as anything else. Continuous numerical values, such as age, temperature, etc should be rescaled to between 0 and 1. If you are planning on running machine learning algorithms on the data or doing other statistical tests then you might also like to transform your rescaled data so that it is normally distributed. Applying a Box-Cox transformation to the column of data is a quick way of doing that.

Non-numeric variables such as blood type should be replaced by a single column per possible value where the value is 1 if the person has that value and 0 otherwise. For example, if the blood types in your data were A, O, B & AB then you would add four columns to your dataset and each patient would have only one of those columns marked with value 1 with 0 in the other three. You might have an extra couple of columns for Rhesus positive and Rhesus negative as well, if it makes sense to separate them out from blood type.

  • $\begingroup$ Thank you so much! But according to what I set values between 0 and 1. Can u give me an example for Ages that varies from 8 to 45 for example? Sorry I'm new to this $\endgroup$
    – MarJamil
    Commented Jan 10, 2019 at 20:05
  • $\begingroup$ @MarJamil If 8-45 is your complete range then transform each value as follows: new_value = (original_value - 8) / (45 - 8) So, age 8 will become 0.0, age 45 will become 1.0, and age 30 will become 0.595 This assumes that you won't have any new born babies or elderly geriatrics in your data of course... $\endgroup$
    – DrMcCleod
    Commented Jan 10, 2019 at 20:50
  • $\begingroup$ This is very helpful. That was a good start for me as I applied it on continuous numerical values. I learnt about min-max method, z-score and decimal scaling. I still don't know what method should be used in case of demographic data like name and adress. $\endgroup$
    – MarJamil
    Commented Jan 12, 2019 at 12:43
  • $\begingroup$ @MarJamil Addresses are useful if you are looking for patterns related to geography. You can use various online databases to match post codes/zip codes to longitude and latitude which will then give a data analyst some numbers to work on. PS if the answer has been valuable, feel free to upvote it. $\endgroup$
    – DrMcCleod
    Commented Jan 12, 2019 at 13:53

Not the answer you're looking for? Browse other questions tagged or ask your own question.