The best practice (in my opinion) is to start by designing your Information Architecture. This will define the end result for how you want your data to be organised. It should include how your data is structured, what content types you have, what metadata is associated to it, what levels of access are required etc.
Your IA will then drive how you design your SharePoint service, i.e. you will set up your SharePoint sites, content types, metadata, permissions etc based off your IA.
This in turn will then determine how you import your data. If your data is already organised in a similar way to your IA, it should be quite straightforward to work through it, and bulk upload each group of files into their relevant SharePoint sites/libraries.
If your existing data structure does not match, then it might be easier to work through your SharePoint sites/libraries and pick and choose what data needs to be uploaded. This can be a large task, but it can be easily decentralised. If you can identify different content owners for your SharePoint sites/libraries, you can delegate responsibility for uploading the content to them.