CLN: Use ABC classes for isinstance checks, remove unnecessary imports
Per #27353 changed ``isinstance`` checks listed in the @WillAyd script to use ABCs where it enabled removal of imports only. 

Note there may be additional files which can be cleaned as the script does not parse multi-line statements.

- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Nice PR! Any idea for how many more there might be? There are a large number of additional isinstance checks which could be changed (40-50 in the files that came up in your script), but I'm not sure how many of them will allow removal of the child imports -- thus won't update those per @jbrockmendel's benchmark.

I'll keep digging for more which *do* allow import removals...do you want me to add any additional to this PR or open separate? May not get it all done at once. I'm OK with doing it incrementally in separate PRs. Just ultimately want to make sure we have an end in sight. However you feel best to manage that works! @jbrockmendel thoughts here? Merge if happy Thanks @addisonlynch 