直方图能帮助迅速了解数据的分布形态,将观测数据分组,并以柱状条表示各分组中观测数据的个数。简单而有效的可视化方法,可检测数据是否有问题,也可看出数据是否遵从某种已知分布。
本次案例通过生成深圳市疫情个案数据集中所有患者的年龄参数直方图。
分别使用Matplotlib、Pandas、Seaborn模块可视化Histogram。
其中,Matplotlib和Pandas样式简单,看上去吸引力不大。Seaborn可往单变量直方图上添加很多东西,更美观,pandas可成组生成直方图。
导入库/数据
importpandasaspd importseabornassns importmatplotlib.pyplotasplt importdatetime importtime df=pd.read_excel(r"szdata.xls") df.head(5)
Matplotlib模块
##注意原始数据集不能存在缺失值,绘制前必须对缺失数据删除或替换,否则无法绘制成功. ##检查年龄是否有缺失 any(df.年龄.isnull())#False ##删除含有缺失年龄的数据 df.dropna(subset=["年龄"],inplace=True) ##绘制直方图 plt.rcParams["font.sans-serif"]='SimHei' plt.rcParams['axes.unicode_minus']=False %configInlineBackend.figure_format='svg' plt.hist(x=df.年龄,bins=20, color="steelblue", edgecolor="black") #添加x轴和y轴标签 plt.xlabel("年龄") plt.ylabel("病例数") #添加标题 plt.title("患者年龄分布") #显示图形 plt.show()
Pandas模块
#注意直方图上添加核密度图,必须将直方图频数更改为频率,即normed参数设置成True #直方图 df.年龄.plot(kind="hist",bins=20,color="steelblue",edgecolor="black",normed=True,label="直方图") #加核密度图 df.