Python数据分析包的学习

96
凡人求索 22d8d123 271c 4d80 9c59 6990844a9e37
2017.10.10 00:05* 字数 1143

用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在数据选取上面的诸多使用:

Paste_Image.png

进行我们常用的逻辑判断

当行和列需要同时选择的时候,用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,两者结合起来绘图将是更加的方便。

数据分析