CI: isort ci
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

asv_bench and doc dir where [added](https://github.com/pandas-dev/pandas/pull/24092/files) to the isort skip section. We should actually check this directory in CI.

Checking doc dir is more effort that its worth ( barely any .py files ) so let's just leave this.
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=h1) Report
> Merging [#24746](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/33f91d8f9f2e84f2b5f3ac3f0481b691c977c427?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/24746/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master   #24746   +/-   ##
=======================================
  Coverage   92.38%   92.38%           
=======================================
  Files         166      166           
  Lines       52358    52358           
=======================================
  Hits        48373    48373           
  Misses       3985     3985
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.81% <ø> (ø)` | :arrow_up: |
| #single | `43.07% <ø> (ø)` | :arrow_up: |


------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=footer). Last update [33f91d8...8d47066](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 # [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=h1) Report
> Merging [#24746](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/6c84005d36309b23fd3648db94f094a1d330963d?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/24746/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master   #24746   +/-   ##
=======================================
  Coverage   92.38%   92.38%           
=======================================
  Files         166      166           
  Lines       52363    52363           
=======================================
  Hits        48376    48376           
  Misses       3987     3987
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.81% <ø> (ø)` | :arrow_up: |
| #single | `42.91% <ø> (ø)` | :arrow_up: |


------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=footer). Last update [6c84005...fa214cd](https://codecov.io/gh/pandas-dev/pandas/pull/24746?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 I understand the point of the PR, and this makes things more consistent, but I'm not a big fan of what we did with isort. So making the list of excludes even longer, seems the opposite direction we should take.

Not a problem with getting this merged, but would be nice to see a solution of a very strict and complex and not-human friendly validation of half of the code base, and no validation in the rest. Sorry, just saw that almost all the code has been isorted, didn't see that before. I guess this makes more sense then. hey thanks for the comments @datapythonista , how come you are not a fan of isort out of interest? - In my mind we previously had an undocumented set of rules for what import order should look like ( by dependency structure ) - so now we don't need to battle on PRs about what that order should be, I just run one command and don't have to worry/often IDE's like to change the import order too ( "optimize imports" in pycharm for example ).
 
I will follow up after this PR to isort the asv_bench directory. afaik none of the pandas devs is able to sort the imports properly unless using isort. I'm happy we respect pep8 and we have the imports sorted by stdlib, third-party and pandas. But the rest doesn't add any value, but extra steps and CI problems even for files with few imports. using isort is much better than the alternative - random changes due to import ordering and re-ordering can you merge master thanks @alimcmaster1 