小猿圈002 发表于 2019-7-9 18:26:11

小猿圈Python开发之绘制频率分布直方图示例

现在人工智能越来越实用,甚至深入到千家万户,随之而来的就是python技术的火爆,今天小猿圈python讲师为你讲解一下绘制频率分布直方图示例,希望对于刚刚自学python的你有一定的帮助。https://upload-images.jianshu.io/upload_images/18616261-8d099d165bb16a87.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240


项目中在前期经常要看下数据的分布情况,这对于探究数据规律非常有用。概率分布表示样本数据的模样,长的好不好看如果有图像展示出来就非常完美了,使用Python绘制频率分布直方图非常简洁,因为用的频次非常高,这里记录下来。还是Python大法好,代码简洁不拖沓~如果数据取值的范围跨度不大,可以使用等宽区间来展示直方图,这也是最常见的一种;如果数据取值范围比较野,也可以自定义区间端点,绘制图像,下面分两种情况展示1.区间长度相同绘制直方图#-*- encoding=utf-8 -*-import datetimeimport numpy as npimport matplotlib.pyplot as pltimport matplotlibzhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')# 按照固定区间长度绘制频率分布直方图# bins_interval 区间的长度# margin    设定的左边和右边空留的大小def probability_distribution(data, bins_interval=1, margin=1):bins = range(min(data), max(data) + bins_interval - 1, bins_interval)print(len(bins))for i in range(0, len(bins)):    print(bins)plt.xlim(min(data) - margin, max(data) + margin)plt.title("probability-distribution")plt.xlabel('Interval')plt.ylabel('Probability')plt.hist(x=data, bins=bins, histtype='bar', color=['r'])plt.show()2.区间长度不同绘制直方图#-*- encoding=utf-8 -*-import datetimeimport numpy as npimport matplotlib.pyplot as pltimport matplotlibzhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc'# 自己给定区间,小于区间左端点和大于区间右端点的统一做处理,对于数据分布不均很的情况处理较友好# bins自己设定的区间数值列表# margin设定的左边和右边空留的大小# label右上方显示的图例文字"""eimport numpy as npdata = np.random.normal(0, 1, 1000)bins = np.arange(-5, 5, 0.1)probability_distribution_extend(data=data, bins=bins)"""def probability_distribution_extend(data, bins, margin=1, label='Distribution'):bins = sorted(bins)length = len(bins)intervals = np.zeros(length+1)for value in data:    i = 0    while i < length and value >= bins:      i += 1    intervals += 1intervals = intervals / float(len(data))plt.xlim(min(bins) - margin, max(bins) + margin)bins.insert(0, -999)plt.title("probability-distribution")plt.xlabel('Interval')plt.ylabel('Probability')plt.bar(bins, intervals, color=['r'], label=label)plt.legend()plt.show()Case示例if __name__ == '__main__':data = probability_distribution(data=data, bins_interval=5,margin=0)以上就是小猿圈python讲师给大家分享的绘制频率分布直方图示例,希望对小伙伴们有所帮助Python交流群:874680195,想要了解更多内容的小伙伴可以到小猿圈直接观看,想要学好Python开发技术的小伙伴快快行动吧。
页: [1]
查看完整版本: 小猿圈Python开发之绘制频率分布直方图示例