fanning1207

​ Pandas 是基于 NumPy 的一个开源 Python 库,它是Python下用于数据分析的主要库。它的名字来源是“ Panel data”。

1
import pandas as pd

Pandas的数据结构

  1. Series

    Series 是一种一维数组,和 NumPy 里的数组很相似。事实上,Series 基本上就是基于 NumPy 的数组对象来的。

    和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。

    创建数组:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    pd.Series(range(3))
    0 0
    1 1
    2 2
    dtype: int64

    pd.Series({'a':1,'b':2})
    a 1
    b 2
    dtype: int64
    pd.Series({'a':1,'b':2}) + 1
    a 2
    b 3
    dtype: int64
    >>>pd.Series({'a':1,'b':2})+pd.Series({'b':11,'a':9})
    a 10
    b 13
    dtype: int64
    #运算会根据索引
    #如果 Pandas 在两个Series里找不到相同的index,对应的位置就返回一个空值 NaN

    和 NumPy 数组不同,Pandas 的 Series 能存放各种不同类型的对象。

    对 Series 的算术运算都是基于 index 进行的。我们可以用加减乘除运算符对两个 Series 进行运算,Pandas 将会根据索引 index,对响应的数据进行计算,结果将会以浮点数的形式存储,以避免丢失精度。

  2. DataFrames

    Pandas 的 DataFrame是一种二维数据结构,数据以表格的形式存储,分成若干行和列。(并没有R的data.frame好用)

    1
    2
    3
    4
    5
    6
    pd_data = pd.DataFrame({'name':['a','b','c'],'age':[11,5,13]})
    pd_data
    name age
    0 a 11
    1 b 5
    2 c 13

    ==注意:Pandas 的 DataFrame不支持data[m,n]这种取数方式!!!==

按列取数:

1
2
3
4
5
6
7
8
9
10
11
12
>>> pd_data['name']
0 a
1 b
2 c
Name: name, dtype: object

>>> pd_data[['name','age']]
name age
0 a 11
1 b 5
2 c 13
#注意这里的双重方括号

按行取数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>> pd_data[1:3]
name age
1 b 5
2 c 13
#注意pd_data[1]是不行的,必须pd_data[1:2]

>>> pd_data[pd_data.age>5]
name age
0 a 11
2 c 13

>>> pd_data.ix[:2]
name age
0 a 11
1 b 5
2 c 13
#ix则可以使用下标选择,也可以用名称,这个功能已渐渐退出了

>>> pd_data.loc[:2]
name age
0 a 11
1 b 5
2 c 13
#loc是根据名称选择,需要用索引名称

>>> pd_data.iloc[:2]
name age
0 a 11
#iloc是根据位置选择,需要用数字

删除:

1
2
3
4
5
6
7
8
9
10
11
12
>>> pd_data.drop('name',axis=1) 
age
0 11
1 5
2 13
#删除列

>>> pd_data.drop(2,axis=0)
name age
0 a 11
1 b 5
#删除行