Data-driven Appointment Scheduling in the Presence of No-shows