1. 16、彻底解决matplotlib中文显示问题,画箱形图及数据分析_笔记
    2. # 设置中文和负号正常显示import matplotlib as mpl
    3. mpl.rcParams['font.family'] = 'sans-serif'
    4. mpl.rcParams['font.sans-serif'] = 'SimHei'
    5. mpl.rcParams['axes.unicode_minus'] = False
    6. 如果是windwos系统 这样就可以生效了,但是mac并不起作用,或许也会有windows系统不起作用的,那就可以尝试下面的方法,
    7. 可以彻底解决matplotlib中文显示问题,包括windowsmac系统
    8. # 1、找到matplotlib 安装的目录,修改matplotlibrc文件
    9. # 删除font.family和font.sans-serif两行前的#,并在font.sans-serif后添加对应的中文字体。这里我们用的是中文简体 SimHei
    10. print(mpl.matplotlib_fname())
    11. # 2、将对应的字体SimHei.tff拷贝到matplotlib/mpl-data/fonts/ttf目录下
    12. # 3、清空缓存文件
    13. 这一步很重要!否则其他几步都是白忙活。一定要清空matlibplot加载字体的缓存,因为加载字体的时候要读取FontList文件,我们新加入的字体不在这个文件的列表,加载时必然会报找不到字体的错:
    14. UserWarning: findfont: Font family [u'sans-serif'] not found. Falling back to Bitstream Vera Sans
    15. (prop.get_family(), self.defaultFamily[fontext]))
    16. 所以我们要前进到这个坑爹的文件夹下。 WindowscentosUbuntu的一些清除缓存的命令,可能并不适用于Mac系统!!!所以很多博客提供的命令,直接不起作用啊!所以稳妥起见,还是手动删除缓存。有些博客上写的是FontList.cache,但是我的机器上没有FontList.cache文件,但是有一个FontList.json文件,打开后发现,这个文件详细记录了matplotlib加载字体的名称、路径。文件目路径是:/Users/lqhk/.matplotlib/FontList.json,删除即可。下次调用matplotlib时,会自动生成一个新的json文件。
    17. # 4、重启python与项目
    18. # 设置图形的显示风格
    19. # plt.style.use('ggplot')
    20. df1 = pd.DataFrame({
    21. u'计算机应用基础': [85, 78, 81, 95, 70, 67, 82, 72, 80, 81, 77],
    22. u'西方经济学': [93, 81, 76, 88, 66, 79, 83, 92, 78, 86, 78],
    23. u'数学': [65, 95, 51, 74, 78, 63, 91, 82, 75, 71, 55],
    24. u'英语': [76, 90, 97, 71, 70, 93, 86, 83, 78, 85, 81],
    25. })
    26. 复制代码
    27. # 用pandas自带的画图工具更快
    28. # df1.boxplot()
    29. # plt.show()
    30. 箱形图的参数解析:
    31. # x:指定要绘制箱线图的数据;
    32. # notch:是否是凹口的形式展现箱线图,默认非凹口;
    33. # sym:指定异常点的形状,默认为+号显示;
    34. # vert:是否需要将箱线图垂直摆放,默认垂直摆放;
    35. # whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
    36. # positions:指定箱线图的位置,默认为[0,1,2…];
    37. # widths:指定箱线图的宽度,默认为0.5;
    38. # patch_artist:是否填充箱体的颜色;
    39. # meanline:是否用线的形式表示均值,默认用点来表示;
    40. # showmeans:是否显示均值,默认不显示;
    41. # showcaps:是否显示箱线图顶端和末端的两条线,默认显示;
    42. # showbox:是否显示箱线图的箱体,默认显示;
    43. # showfliers:是否显示异常值,默认显示;
    44. # boxprops:设置箱体的属性,如边框色,填充色等;
    45. # labels:为箱线图添加标签,类似于图例的作用;
    46. # filerprops:设置异常值的属性,如异常点的形状、大小、填充色等;
    47. # medianprops:设置中位数的属性,如线的类型、粗细等;
    48. # meanprops:设置均值的属性,如点的大小、颜色等;
    49. # capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等;
    50. # whiskerprops:设置须的属性,如颜色、粗细、线的类型等;
    51. # -*- coding: utf-8 -*-
    52. __author__ = 'dongfangyao'
    53. __date__ = '2018/1/5 下午5:29'
    54. __product__ = 'PyCharm'
    55. __filename__ = 'matplotlib2'
    56. import matplotlib.pyplot as plt
    57. import matplotlib as mpl
    58. import pandas as pd
    59. import numpy as np
    60. mpl.rcParams['font.family'] = 'sans-serif'
    61. mpl.rcParams['font.sans-serif'] = ['SimHei']
    62. mpl.rcParams['axes.unicode_minus'] = False
    63. print(mpl.matplotlib_fname())
    64. df1 = pd.DataFrame({
    65. u'计算机应用基础': [85, 78, 81, 95, 70, 67, 82, 72, 80, 81, 77],
    66. u'西方经济学': [93, 81, 76, 88, 66, 79, 83, 92, 78, 86, 78],
    67. u'数学': [65, 95, 51, 74, 78, 63, 91, 82, 75, 71, 55],
    68. u'英语': [76, 90, 97, 71, 70, 93, 86, 83, 78, 85, 81],
    69. })
    70. print(df1)
    71. # print(df1.describe())
    72. # df1.boxplot()
    73. # plt.show()
    74. # plt.style.use('ggplot')
    75. plt.boxplot(x=df1.values, labels=df1.columns, whis=1.5, showmeans=True)
    76. # plt.ylim(0, 85)
    77. plt.show()
    78. 复制代码
    79. 箱形图的数据分析:
    80. # 箱形图有5个参数:
    81. # 下边缘,表示下边界;
    82. # 下四分位数(Q1),又称"第一四分位数",等于该样本中所有数值由小到大排列后第25%的数字;
    83. # 中位数(Q2),又称"第二四分位数"等于该样本中所有数值由小到大排列后第50%的数字;
    84. # 上四分位数(Q3),又称"第三四分位数"等于该样本中所有数值由小到大排列后第75%的数字;
    85. # 上边缘,表述上边界。
    86. # 上四分位数与下四分位数的差距又称四分位间距IQR=Q3-Q1
    87. # 箱型图无需对数据进行正态分布要求。适用范围广。(判断异常的其他方法比如3西伽马,z分数方法都要求数据服从正态分布。
    88. # 箱形图可以用来观察数据整体的分布情况,利用中位数,25%分位数,75%分位数,
    89. # 通过计算这些统计量,生成一个箱体图,箱体包含了大部分的正常数据,而在箱体上边界和下边界之外的,就是异常数据。
    90. # 其中上下边界的计算公式如下:
    91. # UpperLimit=Q3+1.5IQR=75%分位数+(75%分位数-25%分位数)*1.5,
    92. # LowerLimit=Q1-1.5IQR=25%分位数-(75%分位数-25%分位数)*1.5
    93. # IQR表示上下四分位差,系数1.5是一种经过大量分析和经验积累起来的标准,一般情况下不做调整。
    94. # 那为什么要引入箱形图呢?
    95. # 1.为了反映原始数据的分布情况,比如数据的聚散情况和偏态。
    96. # 2.箱型图有个功能就是可以检测这组数据是否存在异常值。异常值在哪里呢?就是在上边缘和下边缘的范围之外。
    97. # 3.可以直观地比较多组数据的情况。
    98. 中文字体对应名字.png (18.71 KB, 下载次数: 0)
    99. 中文字体对应名字.png