用Python进行数据分析时常用包有numpy、scipy、pandas,matplotlib,由于自己现在还是数据分析的初级阶段,一般情况下numpy、pandas、matplotlib包的一些基本知识就够自己在数据分析时使用了。接下来为大家数理下这几个包的使用

阅读路线

numpy包学习

pandas包学习

python绘图

numpy包的学习

numpy是Python的数值计算扩展,专门用来处理矩阵,你可能也会想Python本身不是有list吗,为什么不直接用呢,答案是numpy的运算效率要远比列表要高效的多。

numpy是n维的数组对象,叫做ndarray.其中创建数组用的函数是numpy包中的array函数。

创建一个一维数组

25d02a96fa94?from=groupmessage@

创建一个二维数组

25d02a96fa94?from=groupmessage@

嵌套的列表会被转换成多位数组,也是叫矩阵。同时array数组要求内部的元素为相同的类型。

数组的批量计算

25d02a96fa94?from=groupmessage@

查找

其实数组的索引和列表是相似的,通过方括号和数字即可完成,也可以进行赋值

25d02a96fa94?from=groupmessage@

对多维度数组进行查找

25d02a96fa94?from=groupmessage@

转置

25d02a96fa94?from=groupmessage@

这里只是简单介绍了numpy包的入门,numpy还是有很多的操作,但是对于初级的数据分析师来说,pandas这个包则是更为常用,所以下面集中火力讲这方面的知识。

pandas的学习

pandas有两个主要的数据结构,Series和DataFrame,此时还应该注意他们的大小写。Series其实类似于一维数组,和numpy的array接近,是由一组数据和数据标签来组成的,很显然,数据标签有索引的作用。

Series

25d02a96fa94?from=groupmessage@

用Series函数生成数组,其中能够很明显的看到,这里生成的数组和通过array函数生成的不一样。左边是索引,右边是标签。其实还是可以定义索引的。

25d02a96fa94?from=groupmessage@

获取一个数据或是一组数据

25d02a96fa94?from=groupmessage@

并且选取多个数据的时候,应该用列表表示多个索引。如果数据是字典,也可以直接通过字典创建列表

25d02a96fa94?from=groupmessage@

其实字典key就是列表的索引.

25d02a96fa94?from=groupmessage@

DataFrame

Series是一维的数据结构,DataFrame是一个表格型的数据结构,有不同的列,并且每一列都可以是不同的数据类型。我们可以把它类似于Excel或者是SQL

下面用传入字典的方法来创建一个DataFrame结构

25d02a96fa94?from=groupmessage@

DataFrame中通过info函数直接查看数据类型和统计

25d02a96fa94?from=groupmessage@

两种索引方式进行选取列

25d02a96fa94?from=groupmessage@

用索引字段ix的方式选取行

25d02a96fa94?from=groupmessage@

列可以通过赋值的方式修改和添加,当列的名称是全新,则会在DataFrame的最右边自动加上新的一列。

25d02a96fa94?from=groupmessage@

25d02a96fa94?from=groupmessage@

DataFrame在数据选取上面的诸多使用:

25d02a96fa94?from=groupmessage@

25d02a96fa94?from=groupmessage@

25d02a96fa94?from=groupmessage@

Paste_Image.png

进行我们常用的逻辑判断

25d02a96fa94?from=groupmessage@

当行和列需要同时选择的时候,用ix,之间用逗号分割,逗号前是想要选择的行,逗号后是想要选择的列。

25d02a96fa94?from=groupmessage@

numpy和pandas的基础差不多就这么多了,剩下的就要在练习中来掌握了。

Python绘图

Python进行数据分析时,matplotlib和pandas是绘图方面最常用到的两个库,下面简单介绍下如何使用。

matplotlib库的应用

%matplotlib inline #使用R语言中的ggplot2配色作为绘图风格,为好看

plt.style.use("ggplot") #%matplotlib inline是jupyter自带的方式,允许图表在cell中输出。

import numpy as np

import matplotlib.pyplot as plt

#第一步:建立空白图,也可以指定所建立图的大小,添加figsize=()

fig1 = plt.figure()

#第二步:创建subplot,一个窗口可以添加多个子绘图区。其中subplot()函数中的三个数字,第一个表示Y轴方向的子图个数,

第二个表示X轴方向的子图个数,第三个则表示当前要画图的焦点。

ax1=plt.subplot(2,2,1)

ax2=plt.subplot(2,2,2)

ax3=plt.subplot(2,2,3)

ax4=plt.subplot(2,2,4)

#第三步:subplot中绘图

调用子绘图区的方法,可以绘制点线图、频数图、散点图等常用图形。

ax1.plot(np.random.randn(50).cumsum(),'k--')

ax4.hist(np.random.randn(30))

#第四步:设置各种参数

ax1.set_xlim(-10,60) #set_xlims设置坐标轴的上下限

ax1.set_xticks([0,20,40,60]) #set_ticks设置坐标刻度

ax1.set_xticklabels(['a','b','c','d']) #set_ticklabel设置坐标标注

#第五步:清除和保存图形

ax1.clear()

fig1.savefig(‘.\\test.jpg’) # #windows下的路径

25d02a96fa94?from=groupmessage@

pandas库的应用

相比于利用matplotlib库绘图,采用pandas绘图要便捷得多。使用的是plot()方法,对于Series和DataFrame类型的数据,可以直接调用两种类型对应的plot方法,绘图时自动采用索引值绘制横坐标,采用每一列数据绘制纵坐标。这里分别以两类数据为例。

se1 = Series(np.random.randn(30).cumsum())

df = DataFrame({'a':np.random.randn(30),'b':np.random.randn(30)})

参数设置也是挺方便的,在plot()方法参数列表中添加相应参数值即可。常用的有:类型kind可设置为line(线图)、bar(垂直柱状图)、barh(水平柱状图)、kde(核密度估计图),另外还有color颜色设置、linestyle线型设置、alpha设置透明度、grid设置网格等。

import matplotlib.pyplot as plt

%matplotlib inline

plt.style.use("ggplot")

import pandas as pd

from pandas import Series,DataFrame

import numpy as np

se1 = Series(np.random.randn(30).cumsum())

df = DataFrame({'a':np.random.randn(30),'b':np.random.randn(30)})

se1.plot(kind = 'bar', color = 'g', alpha = 0.5, grid=True)

df.plot(kind = 'bar', alpha=0.5)

25d02a96fa94?from=groupmessage@

清除和保存图形

df.plot()

#清除绘图

_.get_figure().clear()

#关闭窗口

plt.close()

但是有的图形还是要依靠matplotlib,两者结合起来绘图将是更加的方便。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐