4.4 Pandas速成

Pandas提供了用于机器学习的复杂数据类型:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构。

Series:一维数组,与NumPy中的一维Array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效地使用内存,提高运算效率。

Time- Series:以时间为索引的Series。

DataFrame:二维的表格型数据结构。很多功能与R语言中的data.frame类似。可以将DataFrame理解为Series的容器。

Panel:三维数组,可以理解为DataFrame的容器。

在这里我们需要深入理解Series和DataFrame这两种数据类型,来帮助我们实践机器学习。

4.4.1 Series

Series虽然与NumPy的一维数组类似,但是在建立Series时可以设定index,也可以像访问NumPy数组或字典一样来访问Series元素。代码如下:

    import numpy as np
    import pandas as pd
    myarray=np.array([1, 2, 3])
    index=['a', 'b', 'c']
    myseries=pd.Series(myarray, index=index)
    print(myseries)
    print('Series中的第一个元素:')
    print(myseries[0])
    print('Series中的c index元素:')
    print(myseries['c'])

执行结果如下:

    a    1
    b    2
    c    3
    dtype: int64
    Series中的第一个元素:
    1
    Series中的c index元素:
    3

4.4.2 DataFrame

DataFrame是一个可以指定行和列标签的二维数组。数据可以通过指定列名来访问特定列的数据。代码如下:

    import numpy as np
    import pandas as pd
    myarray=np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
    rowindex=['row1', 'row2', 'row3']
    colname=['col1', 'col2', 'col3']
    mydataframe=pd.DataFrame(data=myarray, index=rowindex, columns=colname)
    print(mydataframe)
    print('访问col3的数据:')
    print(mydataframe['col3'])

执行结果如下:

          col1  col2  col3
    row1    1     2     3
    row2    2     3     4
    row3    3     4     5
    访问col3的数据:
    row1    3
    row2    4
    row3    5
    Name: col3, dtype: int64

Pandas是一个功能强大的对数据进行切片的工具,更多的内容请查阅Pandas API(http://pandas.pydata.org/pandas-docs/stable/)。