【数据科学】四分位准则及绘制箱线图

    技术2022-07-10  139

    绘制箱线图一般有两种方法: 1.pandas方法:

    import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("26_finaldata_lowfreq_magn.csv") feature_names = ["average"] feature_data = {} for f in feature_names: feature_data[f] = df[f] data = pd.DataFrame(feature_data) data.plot.box(title="Average value of electromagnetic acquisition data of platform 26") plt.show()

    2.matplotlib.pyplot方法:

    import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("26_finaldata_lowfreq_magn.csv") plt.boxplot(x=df["average"], patch_artist=True, # 是否要自定义颜色 showmeans=False, # 是否显示均值点 boxprops={"color": "black", "facecolor": "c"}, # 箱体的颜色属性,color:边框色,facecolor:填充色 flierprops={"marker": 'o', "markerfacecolor": "darkorange", "color": "black", "alpha": 0.8}, # 异常值的颜色属性,color:轮廓颜色,marker:标记形状,markerfacecolor:填充色 medianprops={"linestyle": "--", "color": "black"}) # 中位线颜色属性,linestyle:线型,color:线的颜色 plt.show()

    通常我们可以通过四分位来检测异常值: 通过上图我们视在上下限之外的数据为异常值。至于上四分位数、中位数、下四分位数,通过python的pandas的用法就能得出,无需自己计算:

    import pandas as pd import matplotlib.pyplot as plt num = [1, 2, 3, 4, 5, 6, 7, 8] print(pd.DataFrame(num).describe()) 0 count 8.00000 mean 4.50000 std 2.44949 min 1.00000 25% 2.75000 50% 4.50000 75% 6.25000 max 8.00000

    25%、50%、75%分别对应上四分位数、中位数和下四分位数,通过公式我们计算得到上四分位数的位置为6.75,也就是在数字6和7之间,但是num列表中根本不存在位置为6.75的值,这时需要按照占比来重新计算,我们认为在6和7之间数据都是均匀分布的,而6.75这个位置占左边6的75%,占右边7的25%,所以6 * 0.75+7 * 0.25=6.25,至于下四分位数同理,通过公式计算得到下四分位数的位置为2.25,即在数字2和3之间,但是由于列表中不存在2.25的位置,所以经过重新计算,2.25这个位置占左边2的25%,占右边3的75%,2 * 0.25+3 * 0.75=2.75。

    Processed: 0.013, SQL: 10