Olá Edson,
A primeira coisa a observar é que o algoritmo que está buscando precisa considerar a sobreposição das letras. Se não precisasse considerar, sua solução iria causar a sensação de resposta correta, pois "BANANA" só tem duas "ANA" sobrepondo a letra "A" que está em negrito. Se não fosse isso a solução seria muito mais simples como segue abaixo:
frase = "ANA E MARIANA GOSTAM DE BANANA"
palavra = "ANA"
print(frase.count((palavra)))
# Imprime 3, como no seu algoritmo
Ainda assim seu algoritmo retornaria o valor errado sem sobreposição conforme o exemplo abaixo:
frase = "ANA E MARIANA GOSTAM DE BANANAANA"
palavra = "ANA"
print(frase.count((palavra)))
# Este novo algoritmo simples iria imprimir 4 quando neste caso você estaria esperando 5
# Seu algoritmo original iria continuar imprimindo 3 pois além de não considerar as sobreposições, conta apenas a primeira ocorrência na palavra em cada palavra
Posta esta introdução, podemos dizer que temos a compreensão do problema:
- Contar as ocorrências de determinado padrão em uma frase
 - Considerar os overlaping (todos os métodos disponíveis no patote "re" do python são non-overlaping, se não quisesse contar os overlaping a solução seria ainda mais simples)
 
Desta forma, segue o código comentado:
# Importando compile de re
from re import compile
frase = "ANA E MARIANA GOSTAM DE BANANA"
palavra = "ANA"
pattern = compile(palavra)    # "Compilando" o padrão /ANA/
start = 0                     # Marcador de posição de início na frase
count = 0                     # Contador de ocorrências
while start < len(frase):     # posição na frase tem que ser menor que o tamanho da frase, caso contrarío haverá um IndexError
    if pattern.search(frase[start:]):                   # Entra no bloco caso encontre uma ocorrência do padrão usando string slicing 
        count += 1                                      # Incrementa contador
        start += pattern.search(frase[start:]).start()  # O .start() faz com que se retorne o índice da frase onde se inicia o padrão encontrado 
    start += 1                # Incrementa a posição na frase em uma unidade. Sem este incremento o script entra em loop infinito pois o mesmo padrão sempre será encontrado
print(count)
Ajudou a entender?
Abraços