Skip to content

Commit f997017

Browse files
committed
Type DataFrame methods: __dataframe__, first, last, asfreq,
`where`
1 parent 2bc8049 commit f997017

File tree

4 files changed

+285
-66
lines changed

4 files changed

+285
-66
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 81 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ from pandas.core.indexing import (
5555
_LocIndexer,
5656
)
5757
from pandas.core.reshape.pivot import (
58+
_PivotAggFunc,
5859
_PivotTableColumnsTypes,
5960
_PivotTableIndexTypes,
6061
_PivotTableValuesTypes,
@@ -124,6 +125,7 @@ from pandas._typing import (
124125
Level,
125126
ListLike,
126127
ListLikeExceptSeriesAndStr,
128+
ListLikeHashable,
127129
ListLikeU,
128130
MaskType,
129131
MergeHow,
@@ -167,6 +169,7 @@ from pandas._typing import (
167169

168170
from pandas.io.formats.style import Styler
169171
from pandas.plotting import PlotAccessor
172+
from pandas.plotting._core import _BoxPlotT
170173

171174
_T_MUTABLE_MAPPING_co = TypeVar(
172175
"_T_MUTABLE_MAPPING_co", bound=MutableMapping, covariant=True
@@ -1361,10 +1364,12 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
13611364
) -> Self: ...
13621365
def pivot_table(
13631366
self,
1364-
values: _PivotTableValuesTypes = ...,
1365-
index: _PivotTableIndexTypes = ...,
1366-
columns: _PivotTableColumnsTypes = ...,
1367-
aggfunc="mean",
1367+
values: _PivotTableValuesTypes = None,
1368+
index: _PivotTableIndexTypes = None,
1369+
columns: _PivotTableColumnsTypes = None,
1370+
aggfunc: (
1371+
_PivotAggFunc | Sequence[_PivotAggFunc] | Mapping[Hashable, _PivotAggFunc]
1372+
) = "mean",
13681373
fill_value: Scalar | None = None,
13691374
margins: _bool = False,
13701375
dropna: _bool = True,
@@ -1696,8 +1701,9 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
16961701
def plot(self) -> PlotAccessor: ...
16971702
def hist(
16981703
self,
1699-
column: _str | list[_str] | None = None,
17001704
by: _str | ListLike | None = None,
1705+
bins: int | list = 10,
1706+
*,
17011707
grid: _bool = True,
17021708
xlabelsize: float | str | None = None,
17031709
xrot: float | None = None,
@@ -1708,24 +1714,88 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
17081714
sharey: _bool = False,
17091715
figsize: tuple[float, float] | None = None,
17101716
layout: tuple[int, int] | None = None,
1711-
bins: int | list = 10,
17121717
backend: _str | None = None,
1718+
legend: bool = False,
17131719
**kwargs: Any,
1714-
): ...
1720+
) -> npt.NDArray[np.object_]: ...
1721+
1722+
# Keep in sync with `pd.plotting.boxplot`
1723+
@overload
17151724
def boxplot(
17161725
self,
1717-
column: _str | list[_str] | None = None,
1718-
by: _str | ListLike | None = None,
1726+
by: None = None,
17191727
ax: PlotAxes | None = None,
17201728
fontsize: float | _str | None = None,
17211729
rot: float = 0,
17221730
grid: _bool = True,
17231731
figsize: tuple[float, float] | None = None,
17241732
layout: tuple[int, int] | None = None,
1725-
return_type: Literal["axes", "dict", "both"] | None = None,
1733+
*,
1734+
return_type: Literal["axes"] | None = None,
17261735
backend: _str | None = None,
17271736
**kwargs: Any,
1728-
): ...
1737+
) -> PlotAxes: ...
1738+
@overload
1739+
def boxplot(
1740+
self,
1741+
by: None = None,
1742+
ax: PlotAxes | None = None,
1743+
fontsize: float | _str | None = None,
1744+
rot: float = 0,
1745+
grid: _bool = True,
1746+
figsize: tuple[float, float] | None = None,
1747+
layout: tuple[int, int] | None = None,
1748+
*,
1749+
return_type: Literal["dict"],
1750+
backend: _str | None = None,
1751+
**kwargs: Any,
1752+
) -> dict[str, PlotAxes]: ...
1753+
@overload
1754+
def boxplot(
1755+
self,
1756+
by: None = None,
1757+
ax: PlotAxes | None = None,
1758+
fontsize: float | _str | None = None,
1759+
rot: float = 0,
1760+
grid: _bool = True,
1761+
figsize: tuple[float, float] | None = None,
1762+
layout: tuple[int, int] | None = None,
1763+
*,
1764+
return_type: Literal["both"],
1765+
backend: _str | None = None,
1766+
**kwargs: Any,
1767+
) -> _BoxPlotT: ...
1768+
@overload
1769+
def boxplot(
1770+
self,
1771+
by: Hashable | ListLikeHashable,
1772+
ax: PlotAxes | None = None,
1773+
fontsize: float | _str | None = None,
1774+
rot: float = 0,
1775+
grid: _bool = True,
1776+
figsize: tuple[float, float] | None = None,
1777+
layout: tuple[int, int] | None = None,
1778+
*,
1779+
return_type: None = None,
1780+
backend: _str | None = None,
1781+
**kwargs: Any,
1782+
) -> PlotAxes: ...
1783+
@overload
1784+
def boxplot(
1785+
self,
1786+
by: Hashable | ListLikeHashable,
1787+
ax: PlotAxes | None = None,
1788+
fontsize: float | _str | None = None,
1789+
rot: float = 0,
1790+
grid: _bool = True,
1791+
figsize: tuple[float, float] | None = None,
1792+
layout: tuple[int, int] | None = None,
1793+
*,
1794+
return_type: Literal["axes", "dict", "both"],
1795+
backend: _str | None = None,
1796+
**kwargs: Any,
1797+
) -> Series: ...
1798+
17291799
sparse = ...
17301800

17311801
# The rest of these are remnants from the

pandas-stubs/core/reshape/pivot.pyi

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -64,54 +64,54 @@ _ExtendedAnyArrayLike: TypeAlias = AnyArrayLike | ArrayLike
6464
@overload
6565
def pivot_table(
6666
data: DataFrame,
67-
values: _PivotTableValuesTypes = ...,
68-
index: _PivotTableIndexTypes = ...,
69-
columns: _PivotTableColumnsTypes = ...,
67+
values: _PivotTableValuesTypes = None,
68+
index: _PivotTableIndexTypes = None,
69+
columns: _PivotTableColumnsTypes = None,
7070
aggfunc: (
7171
_PivotAggFunc | Sequence[_PivotAggFunc] | Mapping[Hashable, _PivotAggFunc]
7272
) = ...,
73-
fill_value: Scalar | None = ...,
74-
margins: bool = ...,
75-
dropna: bool = ...,
76-
margins_name: str = ...,
77-
observed: bool = ...,
78-
sort: bool = ...,
73+
fill_value: Scalar | None = None,
74+
margins: bool = False,
75+
dropna: bool = True,
76+
margins_name: Hashable = "all",
77+
observed: bool = True,
78+
sort: bool = True,
7979
) -> DataFrame: ...
8080

8181
# Can only use Index or ndarray when index or columns is a Grouper
8282
@overload
8383
def pivot_table(
8484
data: DataFrame,
85-
values: _PivotTableValuesTypes = ...,
85+
values: _PivotTableValuesTypes = None,
8686
*,
8787
index: Grouper,
88-
columns: _PivotTableColumnsTypes | Index | npt.NDArray = ...,
88+
columns: _PivotTableColumnsTypes | Index | npt.NDArray = None,
8989
aggfunc: (
9090
_PivotAggFunc | Sequence[_PivotAggFunc] | Mapping[Hashable, _PivotAggFunc]
91-
) = ...,
92-
fill_value: Scalar | None = ...,
93-
margins: bool = ...,
94-
dropna: bool = ...,
95-
margins_name: str = ...,
96-
observed: bool = ...,
97-
sort: bool = ...,
91+
) = "mean",
92+
fill_value: Scalar | None = None,
93+
margins: bool = False,
94+
dropna: bool = True,
95+
margins_name: Hashable = "all",
96+
observed: bool = True,
97+
sort: bool = True,
9898
) -> DataFrame: ...
9999
@overload
100100
def pivot_table(
101101
data: DataFrame,
102-
values: _PivotTableValuesTypes = ...,
103-
index: _PivotTableIndexTypes | Index | npt.NDArray = ...,
102+
values: _PivotTableValuesTypes = None,
103+
index: _PivotTableIndexTypes | Index | npt.NDArray = None,
104104
*,
105105
columns: Grouper,
106106
aggfunc: (
107107
_PivotAggFunc | Sequence[_PivotAggFunc] | Mapping[Hashable, _PivotAggFunc]
108-
) = ...,
109-
fill_value: Scalar | None = ...,
110-
margins: bool = ...,
111-
dropna: bool = ...,
112-
margins_name: str = ...,
113-
observed: bool = ...,
114-
sort: bool = ...,
108+
) = "mean",
109+
fill_value: Scalar | None = None,
110+
margins: bool = False,
111+
dropna: bool = True,
112+
margins_name: Hashable = "all",
113+
observed: bool = True,
114+
sort: bool = True,
115115
) -> DataFrame: ...
116116
def pivot(
117117
data: DataFrame,

pandas-stubs/plotting/_core.pyi

Lines changed: 64 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ from pandas._typing import (
2727
HashableT1,
2828
HashableT2,
2929
HashableT3,
30+
ListLikeHashable,
3031
npt,
3132
)
3233

@@ -39,50 +40,87 @@ _SingleColor: TypeAlias = (
3940
)
4041
_PlotAccessorColor: TypeAlias = str | list[_SingleColor] | dict[HashableT, _SingleColor]
4142

43+
# Keep in sync with `DataFrame.boxplot`
4244
@overload
4345
def boxplot(
4446
data: DataFrame,
45-
column: Hashable | list[HashableT1] | None = ...,
46-
by: Hashable | list[HashableT2] | None = ...,
47-
ax: Axes | None = ...,
48-
fontsize: float | str | None = ...,
49-
rot: float = ...,
50-
grid: bool = ...,
51-
figsize: tuple[float, float] | None = ...,
52-
layout: tuple[int, int] | None = ...,
53-
return_type: Literal["axes"] | None = ...,
47+
column: Hashable | ListLikeHashable,
48+
by: None = None,
49+
ax: Axes | None = None,
50+
fontsize: float | str | None = None,
51+
rot: float = 0,
52+
grid: bool = True,
53+
figsize: tuple[float, float] | None = None,
54+
layout: tuple[int, int] | None = None,
55+
*,
56+
return_type: Literal["axes"] | None = None,
57+
backend: str | None = None,
5458
**kwargs: Any,
5559
) -> Axes: ...
5660
@overload
5761
def boxplot(
5862
data: DataFrame,
59-
column: Hashable | list[HashableT1] | None = ...,
60-
by: Hashable | list[HashableT2] | None = ...,
61-
ax: Axes | None = ...,
62-
fontsize: float | str | None = ...,
63-
rot: float = ...,
64-
grid: bool = ...,
65-
figsize: tuple[float, float] | None = ...,
66-
layout: tuple[int, int] | None = ...,
63+
column: Hashable | ListLikeHashable,
64+
by: None = None,
65+
ax: Axes | None = None,
66+
fontsize: float | str | None = None,
67+
rot: float = 0,
68+
grid: bool = True,
69+
figsize: tuple[float, float] | None = None,
70+
layout: tuple[int, int] | None = None,
6771
*,
6872
return_type: Literal["dict"],
73+
backend: str | None = None,
6974
**kwargs: Any,
70-
) -> dict[str, list[Line2D]]: ...
75+
) -> dict[str, Axes]: ...
7176
@overload
7277
def boxplot(
7378
data: DataFrame,
74-
column: Hashable | list[HashableT1] | None = ...,
75-
by: Hashable | list[HashableT2] | None = ...,
76-
ax: Axes | None = ...,
77-
fontsize: float | str | None = ...,
78-
rot: float = ...,
79-
grid: bool = ...,
80-
figsize: tuple[float, float] | None = ...,
81-
layout: tuple[int, int] | None = ...,
79+
column: Hashable | ListLikeHashable,
80+
by: None = None,
81+
ax: Axes | None = None,
82+
fontsize: float | str | None = None,
83+
rot: float = 0,
84+
grid: bool = True,
85+
figsize: tuple[float, float] | None = None,
86+
layout: tuple[int, int] | None = None,
8287
*,
8388
return_type: Literal["both"],
89+
backend: str | None = None,
8490
**kwargs: Any,
8591
) -> _BoxPlotT: ...
92+
@overload
93+
def boxplot(
94+
data: DataFrame,
95+
column: Hashable | ListLikeHashable,
96+
by: Hashable | ListLikeHashable,
97+
ax: Axes | None = None,
98+
fontsize: float | str | None = None,
99+
rot: float = 0,
100+
grid: bool = True,
101+
figsize: tuple[float, float] | None = None,
102+
layout: tuple[int, int] | None = None,
103+
*,
104+
return_type: None = None,
105+
backend: str | None = None,
106+
**kwargs: Any,
107+
) -> Axes: ...
108+
@overload
109+
def boxplot(
110+
data: DataFrame,
111+
column: Hashable | ListLikeHashable,
112+
by: Hashable | ListLikeHashable,
113+
ax: Axes | None = None,
114+
fontsize: float | str | None = None,
115+
rot: float = 0,
116+
grid: bool = True,
117+
figsize: tuple[float, float] | None = None,
118+
layout: tuple[int, int] | None = None,
119+
*,
120+
return_type: Literal["axes", "dict", "both"],
121+
backend: str | None = None,
122+
**kwargs: Any,
123+
) -> Series: ...
86124

87125
class PlotAccessor:
88126
def __init__(self, data: Series | DataFrame) -> None: ...

0 commit comments

Comments
 (0)