import pandas as pd
import matplotlib.pyplot as plt
# 读入数据
file = r'123.xlsx'
sheet = 'Sheet2'
col = '信誉评级'
# 标题名称
title = col + '核密度曲线'
xlabel = '信誉评级'
# # 横轴显示范围
# xleft = -2
# xright = 2
data = pd.read_excel(file, sheet_name=sheet)
#-------------------------------
# 检查年龄是否有缺失
any(data.eval(col).isnull())
# 不妨删除含有缺失年龄的观察
data.dropna(subset=[col], inplace=True)
#设置绘图风格
plt.style.use('ggplot')
#处理中文乱码
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
#坐标轴负号的处理
plt.rcParams['axes.unicode_minus']=False
#-------------------------------
#删除非数字的成分 和 值为0的成分
Titanic = data[(pd.to_numeric(data.eval(col), errors='coerce').notnull()) & (data.eval(col) != 0)]
# 绘制直方图
Titanic.eval(col).plot(kind = 'hist', bins = 20, color = 'steelblue', edgecolor = 'black', density = True, label = '直方图')
# 绘制核密度图
Titanic.eval(col).plot(kind = 'kde', color = 'red', label = '核密度图')
# 添加x轴和y轴标签
plt.xlabel(xlabel)
plt.ylabel('频数')
# plt.xlim((xleft, xright))
# 添加标题
plt.title(title)
# 显示图例
plt.legend()
# 显示图形
plt.show()