如何从 Pandas DataFrame 创建箱线图?
箱线图也称为晶须图,它提供一组数据的摘要,包括最小值、第一四分位数、中位数、第三四分位数和最大值。此箱线图存在于 matplotlib 库中。在箱线图中,x 轴代表我们要绘制的数据,y 轴代表频率。
方法一:使用 DataFrame_Name['column_name'].plot()函数
我们可以按照以下语法在 Pandas DataFrame 的每一列上创建一个箱线图 -
DataFrame_Name[‘column_name’].plot(kind=’box’, title=’title_of_plot’)
注意:我们可以使用分位数方法找到第一四分位数、中位数、第三四分位数。
查找四分位数的语法
data.quantile([0.25,0.5,0.75])
- 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 中的各个列绘制箱线图。
句法
DataFrameName.boxplot(column=’column_name’,grid=True/False)
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')
输出: