python作频率分布直方图
Python画频率分布直方图,不显示图形怎么办Python画频率分布直方图导入数据并作直方图图形不显示的解决方法Python画频率分布直方图我们在拿到一组数据时,为了观察其大致分布,常常需要绘制其频率分布直方图。下面记录一下今天捯饬了大半天,用pycharm画出频率分布直方图的过程导入数据并作直方图import pandas as pdimport numpy as npimport matplo
·
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的循环是通过缩进来识别的,所以要注意语句的缩进。
更多推荐
所有评论(0)