TYP: tighten Axis
`axis` can only be `Literal[0, 1, "index", "columns"]`. This PR tightens `Axis = Union[int, str]` to `Axis = Union[int, Literal["index", "columns"]]`. A future PR will take care of ints (currently 81 mypy errors).

xref https://github.com/pandas-dev/pandas-stubs/issues/284
Note: I think `"rows"` is accepted too:

https://github.com/pandas-dev/pandas/blob/bf856a85a3b769821809ff456e288542af16310c/pandas/core/generic.py#L489

But I think it's not publicized well and maybe should be deprecated > Note: I think `"rows"` is accepted too:

Yes, the following works:

```py
>>> pd.DataFrame({"A": [1, 2, 3]}, index=["A", "B", "C"]).rename({"A": "0"}, axis="rows")
   A
0  1
B  2
C  3
```

> But I think it's not publicized well and maybe should be deprecated

It is definitely not well publicized - but it feels like an intuitive counterpart to `columns`. I will look into adding `"rows"` to `Axis` (from a typing perspective, not documentation) - can easily be removed if we try to deprecate it later. Thanks @twoertwein 