python作频率分布直方图

Python画频率分布直方图,不显示图形怎么办

Python画频率分布直方图

我们在拿到一组数据时,为了观察其大致分布,常常需要绘制其频率分布直方图。下面记录一下今天捯饬了大半天,用pycharm画出频率分布直方图的过程

导入数据并作直方图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import math

//编写函数
# 函数的定义参考博客:https://blog.csdn.net/whgyxy/article/details/88713917,并进行一些调整以适应非整数的数据
# 按照固定区间长度绘制频率分布直方图
# bins_interval 区间的长度
# margin        设定的左边和右边空留的大小
def probability_distribution(data, bins_interval=1, margin=1):
    bins = np.arange(math.floor(np.min(data)), math.ceil(np.max(data)), bins_interval)
    print(len(bins))
    for i in np.arange(0, len(bins)):
        print(bins[i])
    plt.xlim(math.floor(np.min(data)) - margin, math.ceil(np.max(data)) + margin)
    plt.title("Probability-distribution")
    plt.xlabel('Interval')
    plt.ylabel('Probability/Interval')
    # normed参数调整density,为频率分布density=True,频次分布density=False
    prob,left,rectangle = plt.hist(x=data, bins=bins, density=True, histtype='bar')
    for x, y in zip(left, prob):
        # 字体上边文字
        # 频率分布数据 normed=True
        plt.text(x + bins_interval / 2, y + 0.003, '%.2f' % y, ha='center', va='top')
    plt.show()
  
  //调用函数
 data=pd.read_excel('data.xlsx','Sheet3')  #读入数据
 if __name__ == '__main__':
   probability_distribution(data=data, bins_interval=5,margin=0)

图形不显示的解决方法

这时候使用以上代码会发现,没有报错,但是图形迟迟不出来。经过多次尝试,发现使用随机数据可以出图,但是导入的数据不行,所以是数据类型的问题。需要在导入数据时进行一下数据类型的转化即可,代码如下:

data=pd.read_excel('data.xlsx','Sheet3')  #导入数据
data=np.array(data) #通过该方法将数据由pandas.core.frame.Dataframe类型转变为numpy.ndarray格式

到这里就可以正常运行啦~需要注意的是python的循环是通过缩进来识别的,所以要注意语句的缩进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值