直方图
直方图(Histogram)是一种可视化在连续间隔,或者是特定时间段内数据分布情况的图表,经常被用在统计学领域。简单来说,直方图描述的是一组数据的频次分布,例如把年龄分成“0-5,5-10,……,80-85”17个组,统计一下中国人口年龄的分布情况。直方图有助于我们知道数据的分布情况,诸如众数、中位数的大致位置、数据是否存在缺口或者异常值。
Numpy
histogram
1 | numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None) |
- 参数列表
参数 | 涵义 |
---|---|
a | 输入数据,一个列表 |
bins | int: 区间数,默认10等分 list: 一个边界的列表 string: 一个用于计算区间宽度的函数 |
range | 计算区间,默认是a.min() - a.max() |
normed | 废弃 |
weights | 对应a中每个值的比重,只在density为false的时候有用 |
density | 密度,还没搞懂怎么用 |
- 返回值
参数 | 涵义 |
---|---|
hist | 每个区间的数量 |
bin_edges | 边界列表 |
bincount
这个函数是个简化版,无法指定具体的区间大小,一般不会用
1 | numpy.bincount(x, weights=None, minlength=0) |
- 参数列表
参数 | 涵义 |
---|---|
x | 输入数据,一个列表 |
weights | 对应a中每个值的比重,只在density为false的时候有用 |
minlength | 最少的区间数 |
- 返回值
参数 | 涵义 |
---|---|
hist | 每个区间的数量 |
pandas
DataFrame.plot.hist()
参数 | 涵义 |
---|---|
column | 需要统计的column |
by | 需要聚合的column |
grid | 需要聚合的column |
xlabelsize | 多少个区间 |
xrot | 多少个区间 |
ylabelsize | 多少个区间 |
yrot | 多少个区间 |
x | 横坐标上的标签,一般是DataFrame中某个column的名称,默认为None |
y | 纵坐标上要显示的column,如果不指定column,则默认会绘制DataFrame中所有对象类型为数值型的columns,非数值对象类型的column不显示 |
kind | 选择图表类型,默认为折线图。可选参数为‘line’(折线图)、‘bar’(柱状图,竖直方向)、‘barh’(柱状图,水平方向)、‘hist’(直方图)、‘box’(箱线图)、‘kde’(核密度估计图)、‘area’(面积图)、‘pie’(饼状图)、‘scatter’(散点图)、‘hexbin’(全成为hexagonal binning,有点类似热点图,用于显示一个区域中点的个数,不过是用正六边形表示数值区域) |
ax | matplotlib中的axes对象(可以理解为子图对象)。在多子图(使用matplotlib的subplots()函数,或者add_subplot()函数时),可以通过该参数选择在哪个子图上绘制图形。参数默认为None |
subplots | 是否单独显示每个columns,默认为False。设置为True时,会将每个columns的数据单独在一个子图中显示 |
sharex | 仅作用于”subplots”为True时,是否允许所有的子图共用同一个X轴标签。当“ax”为None时,“sharex”默认为True;当“ax”不为None,“sharex”默认为False,此时每一个子图有自己单独的X轴标签。 |
sharey | 当“ax”不为None或”subplots”为True是,是否允许共用一个Y轴标签,默认为False。 |
layout | 当“subplots”为True时,用于布置图片显示布局,图片按几行、几列显示,参数为元组。 |
figsize | 元组类型,设置图片尺寸。 |
use_index | 是否使用DataFarme的index作为X轴标签,默认为True。当参数“x”不为None时。当DataFrame的index为非数值(包括字符串、datetime等类型),use_index参数设置无效。 |
title | 设置图标标题。 |
grid | 是否显示网格线,默认为False。 |
legend | 是否显示图例,默认为True,图例就是clolumn的名称。 |
style | 设置线型,默认为直线。 |
xticks | 设置X轴上的坐标值,需要数值型序列。 |
yticks | 同”xticks”,作用于Y轴 |
xlim | 设置图片中X轴数值刻度显示的区间范围,元祖类型 |
ylim | 同xlim,作用于Y轴 |
rot | X/Y轴上的刻度值显示时候旋转的角度,水平绘图时旋转X轴坐标,竖直绘图时旋转Y坐标 |
fontsize | 设置X/Y坐标的字体尺寸 |
colormap | 设置图形显示的颜色,用matplotlib内指定的表示颜色的字符串或者colormap对象指定 |
colorbar | 是否显示颜色条,仅仅在绘制有颜色条的图形时使用,如‘scatter’、‘henbin’图 |
position | 仅作用于绘制柱状图时,取值范围[0,1],用于设置X坐标显示的位置,0表示显示在最左边的柱条处,1表示显示在最右边的柱条处。 |
sort_columns | 是否允许对columns的名称进行排序、决定绘图顺序 |
scondary_y | 是否在第二个(一般默认指右边的Y轴)Y轴上绘图,默认为False。该参数还可以传入一个list或tuple,表示指定哪些columns在第二个Y轴上绘图。 |
mark_right | 当使用第二个Y绘图时,是否允许在图例的右边加上“right”字样,表明是在第二个轴上绘图,默认是True |
**kwds | 该参数表明除去以上参数外,你可以传入matplotlib其它的绘图方法 |
seaborn
基于matplotlib上的一层封装
pandas + pyecharts + eplot + numpy
1 | from eplot import eplot |
https://pyecharts.org/#/zh-cn/intro
https://pyecharts.herokuapp.com/
plotly
- Cufflinks是一个第三方的实现,对plotly的封装
- plotly express是官方的,等同于Cufflinks
- Dash——Flask, Plotly.js, and React.js
1 | fig = px.histogram(s, x="principal_payable", marginal="rug", hover_data=s.columns,nbins=20) |
https://plot.ly/python/distplot/