If you want to efficiently EV train, the best way is horde training. A couple of tips and notes:
– You'll want a Pokémon that knows Sweet Scent in your party. It will attract hordes 100% of the time when used in an area where you can encounter Pokémon via walking.
– If the EXP Share is turned on, the EVs gained will be shared with all Pokémon in your party. This can be useful if you want to train multiple Pokémon in, say, Defence.
– Use spread moves, preferably ones with perfect accuracy and aren't ineffective against certain Pokémon (for example, Earthquake can't hit Levitating or Flying Pokémon.)
– Horde training is only really useful for maxing out a certain stat with the full 252 EVs. For more complex spreads, Super Training is better.
– Have the Pokémon hold a power item that corresponds with the stat you want to raise, and if possible give it Pokérus. This will max out your stat in just a few hordes.
Alright, so now that that's out of the way, here are some locations where you are guaranteed to encounter only Pokémon that give off specific EVs.
Whismur
Rusturf Tunnel
Yields HP EVs
Shuppet
Mt. Pyre interior
Yields Attack EVs
Oddish
Route 119
Yield Special Attack EVs
Sandshrew
Route 111
Yields Defence EVs
Swablu
Route 115
Yields Special Defence EVs
Zigzagoon / Taillow / Wingull
Route 104
Yield Speed EVs
While the encounter rate is not 100% for each Pokémon, together all of them give Speed EVs so in the end it doesn't really matter.
Source
Good luck EV training!