数据分析能够帮助我们从数据中分析出一些特征。
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们作出判断,以便采取适当行动。
数据分析的流程
设置环境
matplotlib
能够将视图可视化呈现。是仿照matlab的绘图方法的绘图库。
官方文档的链接
官方已经提示尽量不要用pylab
pylab是,包括:模块matplotlib.pyplot,numpy,numpy.fft, numpy.linalg,numpy.random,和一些额外的功能,所有这些都在单个名称空间。它的最初目的是通过将所有函数导入全局名称空间来模仿类似于MATLAB的工作方式。如今,这被认为是不好的风格。
下面的介绍虽然是我自己写的,但还是觉得写得十分混乱。大家就看看就好,我会尽快以代码例子的形式展示出来(只涉及常用的语句),这样查看使用起来会比较方便。
绘制二维线图的代码例子
pyplot.plot绘制二维线图
通用形式:
plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)
plot(x, y) #使用默认的线条样式和颜色绘制x和y
plot(x, y, 'bo') #用蓝色圆圈标记x和y
plot(y) #以x=0:n-1为索引绘制y
plot(y,'r+') #以x=0:n-1为索引绘制y,并且线为红色加号
plot(x, y, 'go--', linewidth=2, markersize=12)
plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12)
plot('xlabel', 'ylabel', data=obj)#你可以在data参数中提供对象,并只给出x和y的标签,而不是在x和y中给出数据,当然也可以将data参数直接写在xlable和ylable中。data支持 dict, a pandas.DataFrame or a structured numpy array.
绘制多组数据在一张图中:
绘制两次
plot(x1, y1, 'bo')
plot(x2, y2, 'go')
在数据中提供两列
x = [1, 2, 3]
y = np.array([[1, 2], [3, 4], [5, 6]])
plot(x, y)
在plot中提供两组数据
plot(x1, y1, 'g^', x2, y2, 'g-')
如果你不指定颜色,它们也会被分配默认的颜色。
参数:
x,y:类数组或标量数据点的水平/垂直坐标。X值是可选的,默认为range(len(y))。通常,这些参数是一维数组。它们也可以是标量,或二维的(在这种情况下,列表示单独的数据集)。这些参数不能作为关键字传递。
fmt:字符串类型,可选内容。格式字符串。“ro”代表红色的圆圈。有关格式字符串的完整描述,请参见Notes部分。格式字符串只是快速设置基本行属性的缩写。所有这些以及更多的内容都可以通过关键字参数进行控制。此参数不能作为关键字传递。
data:参数,可选项。带有标记数据的对象。如果给出,提供标号名称以绘制x和y。
**kwargs:用于指定绘图属性,可选。例如:
plot([1, 2, 3], [1, 2, 3], 'go-', label='line 1', linewidth=2)
plot([1, 2, 3], [1, 4, 9], 'rs', label='line 2')
下面的是**kwargs中的内容,输入时可以直接写例如:linestyle=’-'
color:设置颜色,英文颜色或十六进制颜色表示。
linestyle:见下表
Linestyle | 描述 |
---|---|
‘-’ or ‘solid’ | 实线 |
‘–’ or ‘dashed’ | 虚线 |
‘-.’ or ‘dashdot’ | 点划线 |
‘:’ or ‘dotted’ | 点线 |
‘None’ or ’ ’ or ‘’ | 不画 |
linewidth:线宽,小数表示
pyplot.scatter绘制散点图
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
参数:
x, y:float or array-like, shape (n, )
与plot线图一样,可以对x轴、y轴调整、设置标签、改变labels…
pyplot.bar绘制条形图
链接
matplotlib.pyplot.bar(x,height,width = 0.8,bottom = None,*,align = ‘center’,data = None,** kwargs)
依旧同理。在此语句中可以设置width=来设置条形图的宽度。
如果你希望横向绘制,x与y应该相互调换,设置线条宽度时,应使用height设置。
pyplot.hist绘制直方图
pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)
注意分组时组距选择一个能被整除的值,否则会出现对不齐。
频数直方图、频率直方图
对于图像纵轴的改变。
pyplot.bar绘制条形图
pyplot.bar(x,height,width = 0.8,bottom = None,*,align = ‘center’,data = None,** kwargs)
一些通用的语句
font_manager设置字体
用于跨平台查找,管理和使用字体的模块。matplotlib并不支持中文字符,需要自己设置,防止中文乱码。
font_manager.FontProperties(fname=“字体位置”)
字体位置window,在c:\windows\front下,里面的字体你都可以使用
如果还是出现乱码,添加一下代码:
pyplot.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
pyplot.rcParams['axes.unicode_minus']=False #用来正常显示负号
pyplot.figtext 在窗口中添加文本,不是标签
figtext(x,y,s,fontdict = None,** kwargs)
参数:
x,y:浮点数,设置文本位置。
s:文本内容。
** kwargs:其他属性。
下面的是**kwargs中的内容
backgroundcolor:背景颜色
color:字体颜色
fontsize:字体大小,浮点数设置或’xx-small’,‘x-small’,‘small’,‘medium’,‘large’,‘x-large’,'xx-large’来表示。
pyplot.subplots 创建子图,在一个窗口中绘制多个图
pyplot.subplots(nrows = 1,ncols = 1,*,sharex = False,sharey = False,挤压= True,subplot_kw = None,gridspec_kw = None,** fig_kw)
nrows,ncols:int,默认值:1 子图网格的行数/列数。
sharex,sharey:bool or {‘none’, ‘all’, ‘row’, ‘col’}, default: False。控制x(sharex)或y(sharey)轴之间的属性共享:这部分查看文档吧,这里不列出了。
主要是用前面nrows和ncols创建窗口
pyplot.figure 创建一个新窗口,或激活一个现有窗口。
一般传递的参数有下面这些,其他见官方文档
参数:
figsize:浮点数,宽度,高度以英寸为单位。
DPI:默认值为100。
facecolor:背景颜色,默认白色。
edgecolor:边框颜色,默认颜色。
frameon:布尔值,默认True,是否绘制边框。
pyplot.figlegend 图例
1.自动检测要在图例中显示的元素
ax.plot([1, 2, 3], label='Inline label')
fig.figlegend()
或
line, = ax.plot([1, 2, 3])
line.set_label('Label via method')
fig.figlegend()
2.标记现有的绘图元素
可以注意到,这种方法是按顺序来给出标签,为避免混淆,尽量不要使用。
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.plot([1, 3, 5], color='blue')
ax2.plot([2, 4, 6], color='red')
fig.figlegend(['the blues', 'the reds'])
3.明确定义图例中的元素
fig.figlegend([line1, line2, line3], ['label1', 'label2', 'label3'])
其他参数:
loc:标签位置
ncol:整数,默认值:1。是图例具有的列数。
fontsize:字体大小,int或{‘xx-small’,‘x-small’,‘small’,‘medium’,‘large’,‘x-large’,‘xx-large’}。
labelcolor:标签颜色,颜色字符串或十六进制。
pyplot.grid 绘制网格线
参数:
**color **:设置线的颜色,颜色字符串或十六进制。
pyplot.savefig保存图像
pyplot.savefig(‘地址\文件名.格式’)保存图像
pyplot.xlabel 设置x轴的标签(y同理)
xlabel(xlabel,fontdict =无,labelpad =无,*,loc =无,** kwargs)
参数:
xlabel:标签文字。
loc:位置,‘left’, ‘center’, ‘right’。(y变成’bottom’, ‘center’, ‘top’)
pyplot.xticks 设置x轴的当前标记位置和标签。(y同理)
xticks(ticks=None, labels=None, **kwargs)[source]
参数:
ticks:xtick位置列表。传递空列表将删除所有xtick,就是你打算显示的点的横(纵)坐标。
例子:
locs, labels = xticks() # 获取当前位置和标签。
xticks(np.arange(0, 1, step=0.2)) # 设置标签的位置。
xticks(np.arange(3), ['Tom', 'Dick', 'Sue']) # 设置文本标签。
xticks([0, 1, 2], ['January', 'February', 'March'],rotation=20) # 设置文本标签和属性。
xticks([]) #去除标签