When you employ someone you have to be prepared to be a good employer. That means that you communicate clearly - make your expectations clear and if you aren't happy about the service received, explain that clearly too. A good employer doesn't quietly remain disgruntled and then seemingly randomly fire their worker, unless there is gross misconduct - they voice disatisfaction, give a chance for improvement and then if necessary end the contract.
Good employers know they will usually have to end a contract/working agreement at some point and know how to do it. Often it isn't due to the service provided being poor, just not required anymore. The good employer gives reasonable notice that it's going to happen and offers thanks for the service and a reference. If the service hasn't been adequate, then an employer should have already raised the issues clearly. When terminating employment they might express the reasons (calmly and politely) or give some kind of other excuse. Unless they are willing to be honest about disatisfaction, reasonable notice I still the decent thing to give.
So Op, consider how clearly you have expressed your dissatisfaction over time keeping. Have you made it clear that you aren't happy and insisted on improvements which haven't occurred - or have you just inwardly seethed but never said. Whilst the cleaner might be expected to be on time, if you've seemed unbothered by her flexible time keeping, she might have assumed you don't mind. It would be unreasonable to go from no mention of the issue to sacking about it, regardless of whether you give that as the reason for ending employment or not.
In the end, you are free to end the employment for any reason really. Simply not wanting a cleaner any longer is fine. You are free to tell her that you are going to try to save some money and do your own cleaning or whatever. The decent thing would be to give some notice and not just to say 'i won't need you next week, give me the keys right now, goodbye'
If you want to end the job, don't be scared to do it. All employers have to do this and cleaners know jobs come to an end. It's all normal. As long as you do things fairly and treat her reasonably it's okay.
Often employers though aren't fair when ending cleaning contracts. They might feel disgruntled about the service or timekeeping and let that feeling fester but never actually voice it. They then feel justified in giving zero notice or even being cross with the cleaner and voicing the disatisfaction at the same time. As sacking them, but this really isn't reasonable. Lots of people shy away from being honest and good communicators.
Unless you have communicated your disatisfaction clearly and are prepared to end the contract with short notice due to disatisfaction, I would aim to give at least a couple of weeks and ideally a month of notice. It's fine to end the agreement and you shouldn't feel scared, but do it the right way and don't justify treating her badly because you've been dissatisfied if you've never actually made it crystal clear.