15
votes

By default the numerical values in data frame are stored up to 6 decimals only. How do I get the full precision.

For example
34.98774564765 is stored as 34.987746. I do want the full value.

and 0.00000565 is stored as 0. .

Apart from applying formats to each data frame is there any global setting that helps preserving the precision.

Thanks

3
Can you post a reproducible example? - Maximilian

3 Answers

40
votes

No, 34.98774564765 is merely being printed by default with six decimal places:

>>> pandas.DataFrame([34.98774564765])
           0
0  34.987746

The data itself has more precision:

>>> pandas.DataFrame([34.98774564765])[0].data[0]
34.98774564765

You can change the default used for printing frames by altering pandas.options.display.precision.

For example:

>>> pandas.set_option("display.precision", 8)
>>> pandas.DataFrame([34.98774564765])
                0
0  34.98774564765
20
votes

You can also use the 'display.float_format' option

with pd.option_context('display.float_format', '{:0.20f}'.format):
    print(pd.DataFrame([34.98774564765]))

                        0
0 34.98774564765000150146
7
votes

Your data is stored with the precision, corresponding to your dtype (np.float16, np.float32, np.float64).

pd.options.display.precision - allows you to change the precision for printing the data