当前位置 : 主页 > 编程语言 > python >

python绘制直方图plt.hist()

来源:互联网 收集:自由互联 发布时间:2022-06-15
本期主要讲一下利用matplotlib.pyplot类绘制直方图,将数据分成若干簇,并在合适位置标注簇里面样本数。 背景 现在我有一份各楼盘八月份的两个源头的价格,我需要进行差异对比,想知


本期主要讲一下利用matplotlib.pyplot类绘制直方图,将数据分成若干簇,并在合适位置标注簇里面样本数。

  • 背景
    现在我有一份各楼盘八月份的两个源头的价格,我需要进行差异对比,想知道1%以内的有多少,3%以内的有多少,5%以内的有多少,5%以上的有多少,这个恰好可以用分簇直方图刻画

  • 入门级

  • 原数据

包含id,价格1和价格2三个字段

python绘制直方图plt.hist()_数据

  • 代码
# -*- coding: utf-8 -*-
"""
Project_name:柱状分布统计图
Description:利用柱状图刻画数据分布和统计类别数量
Created on Mon Nov 2 10:57:34 2020
@author: 帅帅de三叔
"""

import pandas as pd #导入数据分析模块
import matplotlib.pyplot as plt #导入绘图模块
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"]
data = pd.read_excel("D:\项目\柱状分布统计图\柱状分布统计图.xlsx", sheet_name = "Sheet1").dropna() #读取数据

def compareHist(price1, price2): #定义比较res价格函数
diff = abs(price1 - price2) / price2 #差异率
plt.figure(figsize = (6, 4)) #新建画布
n, bins, patches = plt.hist(diff, bins = [0, 0.01, 0.03, 0.05, 0.1], color='brown', alpha = 0.8, label = "直方图" ) #绘制直方图
for i in range(len(n)):
plt.text(bins[i]*1.0, n[i]*1.01, n[i]) #打标签,在合适的位置标注每个直方图上面样本数
plt.grid(alpha = 0.5) #添加网格线
plt.xlabel("误差率")
plt.ylabel("案例数")
plt.title("柱状分布统计图")
plt.show()
if __name__ == "__main__":
compareHist(data["price1"], data["price2"])
  • 预览效果

python绘制直方图plt.hist()_直方图_02

  • 进阶版

我不单有8月份价格,我还有1-8月的价格,需要都每个月对比都刻画出来,这时候需要用到循环

# -*- coding: utf-8 -*-
"""
Project_name:与res价格对比
Description:将计算出来的价格与当前系统的res价格对比分析
Created on Thu Sep 24 11:43:13 2020
@author: 帅帅de三叔
"""
import pandas as pd #导入数据分析模块
import pandas_profiling #
import matplotlib.pyplot as plt #导入绘图模块
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"]
resData = pd.read_excel("2020年各楼盘各月份基价-副本.xlsx", sheet_name = "Sheet1").dropna() #读取数据

def compareRes(price, priceres, title): #定义比较计算价格与res价格函数
diff = abs(price - priceres) / price #差异率
profile = pandas_profiling.ProfileReport(diff)
profile.to_file("与res8月对比.html")
plt.figure(figsize = (6, 4)) #新建画布
n, bins, patches = plt.hist(diff, bins = [0, 0.05, 0.1, 0.2, 1], color='brown', alpha = 0.8, label = "直方图" ) #绘制直方图
#diff.plot(kind = "kde", color = "blue", label = "核密度曲线", alpha = 0.4)
plt.grid(alpha = 0.5) #添加网格线
print(n, bins, patches) #打印出案例数和间隔边界值以及BarContainer object of 4 artists
for i in range(len(n)):
plt.text(bins[i]*1.0, n[i]*1.01, n[i]) #打标签,在合适的位置标注每个直方图上面样本数
plt.xlabel("误差率")
plt.ylabel("案例数")
plt.title(title)
plt.show()
if __name__ == "__main__":
for i in range(1, 9):
title = str(i)+"月与res对比" #标题
price1 = "20200"+str(i)+"price" #计算价格1
price2 = "res20200"+str(i)+"price" #res价格
compareRes(resData[price1], resData[price2], title)

会生成8张类似的直方图,自然,你也可以把其放在同一个画布上。

python绘制直方图plt.hist()_ico_03



上一篇:百度文库文档(文字和图片)
下一篇:没有了
网友评论