I understand that fees to send bitcoin are based on amount of data. But how do I know how much data is required?
You don't need to know.
The core client takes a configuration value in bitcoins per kilobyte. You don't have to provide the data amount at any input field.
Rule by thumb (for the curious) are 500 bytes transaction size on average, smallest like 226 bytes. But again, you cannot change the size at all. You can only configure the client on satoshi amount paid per byte. Could pay 1 sat / 1 byte and let it timeout from mempool, just sending again with 1 sat. A tradeof between fees and transacting timespan.
Your one stop on fees:
https://en.bitcoin.it/wiki/Transaction_fees