There's been a few contact creation scripts popup recently for the Graph API like this as well as a few questions on the forums around this topic lately. None of these examples and questions are taking advantage of using batching in the Microsoft Graph which will give you a significant uplift in performance vs the single request method when creating larger numbers of items and also help you a little around throttling. I've added a new post to my Graph 101 binder on GitHub that includes an example of doing a CSV Contact import using batching and Service Principal Authentication https://github.com/gscales/Graph-Powershell-101-Binder/blob/master/Contacts/Batch%20Importing%20Contacts.md If your interested in a EWS version that can use larger batches (eg 60-100 contacts per request) I've also include an example on GitHub for this https://github.com/gscales/Powershell-Scripts/blob/master/Graph101/BatchContactCreationEWS.ps1
Pushing the Envelope in Messaging and Office 365 Development