python里hist_python matplotlib模块: hist(直方图)

需要注意的是边缘数据存在导致结果看上去"不完整"的情况:

image.png

最右边的数据看不清楚,但是确实存在,只是数据太小了。这时候我们使用log参数,让程序自动调整y轴的尺度:

image.png

image.png

这样在不同的尺度上所有的数据都可以很清晰的看到。

源码:

# coding=utf-8

from matplotlib import pyplot as plt

import pandas as pd

plt.style.use('fivethirtyeight')

'''

# 表示我们要分类的所有横轴上的数据(纵轴将是每个区间[任意指定]内横轴数据出现的数量)

ages = [18, 19, 21, 25, 26, 26, 30, 32, 38, 45, 55]

# hist方法可以创建直方图, 重要的参数有bins, edgecolor, log 等

# bins可以是一个整数(将所有数据平均分成这个整数这么多段[所有区间]); 也可以是一个可迭代对象, hist会根据给定的对象来划分区间.

# edgecolor可以指定每个区间之间分割线的颜色, 如果制定了edgecolor会很清晰的分辨出各个区间.

# log是当你的数据集"差异"较大时,也就是说有个别"突出"数据远离平均数据,这样最后的结果很可能会"看不清"这些边缘数据,\

# 这时使用log=True可以很好的解决,hist会自动帮你选定划分数据的尺度,以让所有数据都清晰的在图里显示出来.

plt.hist(ages, bins=5, edgecolor='#444444')

'''

# 人为的指定区间, 区间数量是len(slices)-1

slices = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# 从数据集csv文件中读取数据

data = pd.read_csv('./data_3.csv')

# 取出csv文件所有列名为Age的值并返回一个可迭代对象

data_ages = data['Age']

# 绘制直方图,分割区间人为指定, 边缘颜色黑色, hist自动选定竖轴尺度

plt.hist(data_ages, bins=slices, edgecolor='#444444', log=True)

# 求出数据集年龄的平均值

median_age = data_ages.median()

# 绘制vertical(竖直)分割线以表示平均值, 颜色是红色, 标签是Age Median, 线宽设置为2

plt.axvline(median_age, color='#fc4f30', label='Age Median', linewidth=2)

# 必须要有legend标签才会绘制出去

plt.legend()

# 求出直方图在竖轴上最大值和最小值

y_min, y_max = plt.ylim()

# 在平均线靠右边一点绘制平均值的文本, 前两个参数是位置, 最后一个参数是待绘制的文本

plt.text(median_age * 1.05, y_max * 0.7,

'Mean: {:.1f}'.format(median_age), color='#fc4f30')

plt.title('First histograms')

plt.xlabel('ages')

plt.ylabel('number of a specific range')

plt.tight_layout()

plt.show()

运行结果:

image.png

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值