Q: How Can I store data so users can't easily tamper with it? I'm fairly new to Python and as a project I'm working on a little game. I'd like to make sure my data is stored in a format that I won't run into problems moving forward. 
The data I'll need to store will be integral to generating some in-game elements through procedural generation—essentially storing names, properties, and possible behaviors for these objects. I would not want players to be able to easily edit a file and change values so that a common level 1 creature suddenly drops 2 million gold pieces.
My intentions are to eventually use Py2Exe or PyInstaller. I have considered XML, YAML, and JSON but I'm not sure which direction I should go or what I may  not be aware of.
I'm sure if a user wanted to badly enough they could figure it out—but what is the best way to make it inconvenient for the average user to tamper with said data?

A: This is impossible to solve. You should use some kind of encryption or signature scheme to make sure the data is not tampered with in combination with obfuscation so that the secret algorithm or secret key cannot be easily extracted from the ciphertext.
Since this is about tamper protection and not data confidentiality, I would suggest to you to use a digital signature algorithm. You would generate a developer private+public key pair, use the private key to sign the static data and put the public key into the code in an obfuscated fashion.
This is protects the manipulation of your data better than any encryption scheme under the assumption that it is harder to manipulate your program than to simply decompile and read the source code.
If you would for example use a symmetric cipher to encrypt that data and store the key in your code, a malicious user could deduce the algorithm and key from your code and implement this. The user would then decrypt the static data, manipulate it and re-encrypt it again. Your program which was not manipulated would never know that the content was changed.
It also has to be asymmetric (such as RSA signature or ECDSA), so using an HMAC over your static data would have the same issue as symmetric encryption.
