首页 > 代码库 > Pandas 10min入门(官方文档注释版一)

Pandas 10min入门(官方文档注释版一)

      接触Pandas有一段时间,但一直未能系统的进行过总结。最近开始接触机器学习,用pandas的地方颇多,因此专门重新整理以下。

     首先,Pandas 作为Python处理矩阵类数据的王牌利器,其官方文档相当丰富而且详细,为了方便学习Pandas官方竟然给了一个10min中的入门教程,链接如下:http://pandas.pydata.org/pandas-docs/stable/10min.html 。

教程很详细,但是对于入门者而言,个人感觉还是缺少一些说明。因此特意增加了一些相关的注释和说明。详细内容如下:


 

  • 第一步:加载Pandas 库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

    上述为加载的pandas 库,由于pandas中的维度元素主要是numpy,所以通常也将numpy一起加载,而matplotlib是一个画图的工具,为了方便后面展示需要,因此也加载了一份。这里需要注意的是3个加载的库都使用了缩写的简称pd,np,plt缩写的名字虽无正式约定,但是已经约定俗成,因此建议保留这种缩写的方式。

  •    创建一个Series对象

       官方的定义:Series is a one-dimensional labeled array capable of holding any data type (integers, strings, floating point numbers, Python objects, etc.). The axis labels are collectively referred to as the index.

      Series 是一个一维带标记的数组,它由一组数据(integers, strings, floating point numbers, Python objects, etc.)以及一组与之相关的索引组成。可以将Series看成是一个定长的有序字典,索引是到数据值的一个映射。

      最长用的创建Series的方式:

 s = pd.Series(data, index=index) 

     data 可以是任意的一种Numpy类型: 

  • a Python dict
  • an ndarray
  • a scalar value (like 5)

      Index是一组索引标签。如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> s = pd.Series([1,3,5,np.nan,6,8])
>>> s
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

上文没有使用index,因此自动生成从0开始的index(注意:index并非只能是数值,也可以是字符串等值,但是需要自己定义).

代码中的np.nan是代表空值的含义。

  • 通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame

   

技术分享
>>> dates = pd.date_range(20130101, periods=6)
>>> dates
DatetimeIndex([2013-01-01, 2013-01-02, 2013-01-03, 2013-01-04,
               2013-01-05, 2013-01-06],
              dtype=datetime64[ns], freq=D)
>>> df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list(ABCD))
>>> df
                   A         B         C         D
2013-01-01 -1.456158 -0.017003  0.043328  0.314046
2013-01-02 -0.443706 -1.127461  0.122404  0.358885
2013-01-03 -1.004546 -0.029662  1.321131 -1.048084
2013-01-04 -0.103759  0.287075 -1.101669 -0.367991
2013-01-05 -0.379868  1.898191  3.520912 -0.384936
2013-01-06 -1.792955  1.118273 -0.279532  0.281036
View Code

     DataFrame结构是一个二维(可以通过其他方法实现多维)的表格型数据结构,它含有一组有序的列,每列可以是不同的值类型。其既有行索引又又列索引,其可以被看作是由Series组成的字典(公用同一个索引)。

     其创建时的参数含义具体如下:

     技术分享

index 相当于是一个行索引,columns相当于一个列索引。上述代码中index 通过 dates = pd.date_range(‘20130101‘, periods=6)  定义,列索引通过 columns=list(‘ABCD‘) 显示定义。

下面举的例子在官方文档中没有,但个人觉得为了更好地理解下一个官方的例子,有必要先了解下以下这个例子:

    在前面讲述Series定义的时候,笔者提及“可以将Series看成是一个定长的有序字典”,在关于“Series”的例子中,我们传入的都市一个ndarray数组,但data的类型也可以是dict字典,如果data是一个字典的话,那么字典的key值也就默认就是index值,如下所示:

技术分享
>>> sdata = http://www.mamicode.com/{"name":"lst","age":34,"company":"icpdas"}
>>> sd = pd.Series(sdata)
>>> sd
age            34
company    icpdas
name          lst
dtype: object
>>> 
View Code

了解了刚才的例子,我们在看下面通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame的例子:

>>> df2 = pd.DataFrame({ A : 1.,
                           B : pd.Timestamp(20130102),
                           C : pd.Series(1,index=list(range(4)),dtype=float32),
                          D : np.array([3] * 4,dtype=int32),
                           E : pd.Categorical(["test","train","test","train"]),
                           F : foo })
>>> df2
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

可以发现字典的key值,自动变成了列index,而行index是自动生成的 。

  • 查看不同列的数据类型
>>> df2.dtypes
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object

     

 

 

 

   

Pandas 10min入门(官方文档注释版一)