pandas.DataFrame.plot.box#

DataFrame.plot.box(by=None, **kwargs)[source]#

Make a box plot of the DataFrame columns.

A box plot is a method for graphically depicting groups of numerical data through their quartiles. The box extends from the Q1 to Q3 quartile values of the data, with a line at the median (Q2). The whiskers extend from the edges of box to show the range of the data. The position of the whiskers is set by default to 1.5*IQR (IQR = Q3 - Q1) from the edges of the box. Outlier points are those past the end of the whiskers.

For further details see Wikipedia’s entry for boxplot.

A consideration when using this chart is that the box and the whiskers can overlap, which is very common when plotting small sets of data.

Parameters:
bystr or sequence

Column in the DataFrame to group by.

Changed in version 1.4.0: Previously, by is silently ignore and makes no groupings

**kwargs

Additional keywords are documented in DataFrame.plot().

Returns:
matplotlib.axes.Axes or numpy.ndarray of them

See also

DataFrame.boxplot

Another method to draw a box plot.

Series.plot.box

Draw a box plot from a Series object.

matplotlib.pyplot.boxplot

Draw a box plot in matplotlib.

Examples

Draw a box plot from a DataFrame with four columns of randomly generated data.

>>> data = np.random.randn(25, 4)
>>> df = pd.DataFrame(data, columns=list('ABCD'))
>>> ax = df.plot.box()
../../_images/pandas-DataFrame-plot-box-1.png

You can also generate groupings if you specify the by parameter (which can take a column name, or a list or tuple of column names):

Changed in version 1.4.0.

>>> age_list = [8, 10, 12, 14, 72, 74, 76, 78, 20, 25, 30, 35, 60, 85]
>>> df = pd.DataFrame({"gender": list("MMMMMMMMFFFFFF"), "age": age_list})
>>> ax = df.plot.box(column="age", by="gender", figsize=(10, 8))
../../_images/pandas-DataFrame-plot-box-2.png