📜  如何从 Pandas DataFrame 创建箱线图?

📅  最后修改于: 2022-05-13 01:54:19.078000             🧑  作者: Mango

如何从 Pandas DataFrame 创建箱线图?

箱线图也称为晶须图,它提供一组数据的摘要,包括最小值、第一四分位数、中位数、第三四分位数和最大值。此箱线图存在于 matplotlib 库中。在箱线图中,x 轴代表我们要绘制的数据,y 轴代表频率。

方法一:使用 DataFrame_Name['column_name'].plot()函数

我们可以按照以下语法在 Pandas DataFrame 的每一列上创建一个箱线图 -

注意:我们可以使用分位数方法找到第一四分位数、中位数、第三四分位数。

查找四分位数的语法

  • 0.25 表示第一个四分位数。
  • 0.5 表示中值。
  • 0.75 表示第三个四分位数。

查找数据四分位数的示例

Python3
# import necessary packages
import pandas as pd
  
data = pd.Series([1, 2, 3, 4, 5, 6])
  
# find quartile values
print(data.quantile([0.25, 0.5, 0.75]))


Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 64],
                     'Credits': [8, 10, 9, 8, 7]})
  
# box plot
data['Marks'].plot(kind='box', title='Marks of students')
plt.show()


Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 10],
                     'Credits': [8, 10, 9, 8, 0]})
  
# outlier box plot
data['Marks'].plot(kind='box', title='Marks of students')
plt.show()


Python3
# import necessary packages
import pandas as pd
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 64],
                     'Credits': [8, 10, 9, 8, 7]})
  
# box plot for marks column
data.boxplot(column='Marks')


输出

0.25    2.25
0.50    3.50
0.75    4.75
dtype: float64

考虑以下数据来创建一个 DataFrame 并在其上绘制一个箱线图。

Name

Marks

Credits

Akhil

77

8

Nikhil

95

10

Satyam

89

9

Sravan

78

8

Pavan

64

7

例子:

使用上述数据创建一个 DataFrame 并在学生的分数上绘制箱线图。底线表示学生的最低分数,顶线表示学生的最高分数。在底部和顶部之间,中间的 3 条线分别表示第一四分位数、中位数和第三四分位数。

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 64],
                     'Credits': [8, 10, 9, 8, 7]})
  
# box plot
data['Marks'].plot(kind='box', title='Marks of students')
plt.show()

输出:

例子:

在这个例子中,学生的最低分数是 10,这个分数非常小,与其他分数(数据点)相差甚远。因此,它在底部表示为 o,表示异常值。如果数据中的任何数据点与其他值相比更大或更小,则将生成以下图。

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 10],
                     'Credits': [8, 10, 9, 8, 0]})
  
# outlier box plot
data['Marks'].plot(kind='box', title='Marks of students')
plt.show()

输出:

方法二:使用 pandas.DataFrame.boxplot()函数

我们还可以使用pandas.DataFrame.boxplot为 DataFrame 中的各个列绘制箱线图。

句法

grid 表示图形中的网格线。它是一个可选参数,如果没有指定,它将被认为是真实的。

例子:

在这里,我们使用 boxplot 方法绘制箱线图,而不是使用 plot 方法并指定其类型。由于我们没有在 boxplot 方法中指定 grid 参数作为参数,它会考虑默认值,即 True。

Python3

# import necessary packages
import pandas as pd
  
# create a dataframe
data = pd.DataFrame({'Name': ['Akhil', 'Nikhil', 'Satyam', 'Sravan', 'Pavan'],
                     'Marks': [77, 95, 89, 78, 64],
                     'Credits': [8, 10, 9, 8, 7]})
  
# box plot for marks column
data.boxplot(column='Marks')

输出: