用Python进行数据分析时常用包有numpy、scipy、pandas,matplotlib,由于自己现在还是数据分析的初级阶段,一般情况下numpy、pandas、matplotlib包的一些基本知识就够自己在数据分析时使用了。接下来为大家数理下这几个包的使用
阅读路线
- numpy包学习
- pandas包学习
- python绘图
numpy包的学习
numpy是Python的数值计算扩展,专门用来处理矩阵,你可能也会想Python本身不是有list吗,为什么不直接用呢,答案是numpy的运算效率要远比列表要高效的多。
numpy是n维的数组对象,叫做ndarray.其中创建数组用的函数是numpy包中的array函数。
-
创建一个一维数组
- 创建一个二维数组
嵌套的列表会被转换成多位数组,也是叫矩阵。同时array数组要求内部的元素为相同的类型。
- 数组的批量计算
- 查找
其实数组的索引和列表是相似的,通过方括号和数字即可完成,也可以进行赋值
对多维度数组进行查找
- 转置
这里只是简单介绍了numpy包的入门,numpy还是有很多的操作,但是对于初级的数据分析师来说,pandas这个包则是更为常用,所以下面集中火力讲这方面的知识。
pandas的学习
pandas有两个主要的数据结构,Series和DataFrame,此时还应该注意他们的大小写。Series其实类似于一维数组,和numpy的array接近,是由一组数据和数据标签来组成的,很显然,数据标签有索引的作用。
-
Series
用Series函数生成数组,其中能够很明显的看到,这里生成的数组和通过array函数生成的不一样。左边是索引,右边是标签。其实还是可以定义索引的。
获取一个数据或是一组数据
并且选取多个数据的时候,应该用列表表示多个索引。如果数据是字典,也可以直接通过字典创建列表
其实字典key就是列表的索引.
- DataFrame
Series是一维的数据结构,DataFrame是一个表格型的数据结构,有不同的列,并且每一列都可以是不同的数据类型。我们可以把它类似于Excel或者是SQL
下面用传入字典的方法来创建一个DataFrame结构
DataFrame中通过info函数直接查看数据类型和统计
两种索引方式进行选取列
用索引字段ix的方式选取行
列可以通过赋值的方式修改和添加,当列的名称是全新,则会在DataFrame的最右边自动加上新的一列。
DataFrame在数据选取上面的诸多使用:
进行我们常用的逻辑判断
当行和列需要同时选择的时候,用ix,之间用逗号分割,逗号前是想要选择的行,逗号后是想要选择的列。
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下的路径
- 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)
清除和保存图形
df.plot()
#清除绘图
_.get_figure().clear()
#关闭窗口
plt.close()
但是有的图形还是要依靠matplotlib,两者结合起来绘图将是更加的方便。