pandas 入门 5.1 章

pandas 经常是和其他数值计算工具一起使用,比如 Numpy 和 SciPy 以及数据可视化工具比如 matplotlib。

pandas 数据结构介绍

两个常用的工具数据结构:Series 和 DataFrame

Series

Series 是一种一维的数组型对象,它包含了一个值序列,并且包含了数据标签。

In [1]: import pandas as pd

In [2]: obj = pd.Series([4,7,-5,3])

In [3]: obj
Out[3]:
0    4
1    7
2   -5
3    3
dtype: int64
In [1]: import pandas as pd

In [2]: obj2 = pd.Series([4, 7, -5, 3], index=['d','b', 'a', 'c'])

In [3]: obj2
Out[3]:
d    4
b    7
a   -5
c    3
dtype: int64

In [4]: obj2[obj2>0]
Out[4]:
d    4
b    7
c    3
dtype: int64
In [8]: obj4 = pd.Series(sdata, index = states)

In [9]: obj4
Out[9]:
California        NaN
Chio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64

In [10]: pd.isnull(obj4)
Out[10]:
California     True
Chio          False
Oregon        False
Texas         False
dtype: bool

In [11]: pd.notnull(obj4)
Out[11]:
California    False
Chio           True
Oregon         True
Texas          True
dtype: bool

DataFrame

DataFrame 表示的是矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame 既有行索引也有列索引,它可以被视作一个共享相同索引的Series的字典。

n [23]: data = {'a': [1, 2, 3], 'b': ['ch', 'ch', 'bh'], 'c': [100,222,333]}

In [24]: frame = pd.DataFrame(data)

In [25]: frame
Out[25]:
   a   b    c
0  1  ch  100
1  2  ch  222
2  3  bh  333

给列按指定顺序排列


In [30]: pd.DataFrame(data, columns = ['c', 'a', 'a'])
Out[30]:
     c  a  a
0  100  1  1
1  222  2  2
2  333  3  3

行也可以通过位置或特殊属性loc进行选取

In [31]: frame.loc[0]
Out[31]:
a      1
b     ch
c    100
Name: 0, dtype: object

将列表或数组赋值给一个列时,值的长度必须和DataFrame的长度相匹配。

In [43]: frame2
Out[43]:
   a   b   c   d
0  1  ch  12  14
1  2  ch  12  14
2  3  bh  12  14

In [44]: frame2['c'] = np.arange(3)

In [45]: frame2
Out[45]:
   a   b  c   d
0  1  ch  0  14
1  2  ch  1  14
2  3  bh  2  14

In [46]: val = pd.Series([1,2], index = [0,1])

In [47]: frame2['d'] = val

In [48]: frame2
Out[48]:
   a   b  c    d
0  1  ch  0  1.0
1  2  ch  1  2.0
2  3  bh  2  NaN

In [49]: frame2['e'] = frame2.c == 1

In [50]: frame2
Out[50]:
   a   b  c    d      e
0  1  ch  0  1.0  False
1  2  ch  1  2.0   True
2  3  bh  2  NaN  False

In [52]: del frame2['e']
In [53]: frame2.columns
Out[53]: Index(['a', 'b', 'c', 'd'], dtype='object')

如果嵌套字典被赋值给DataFrame ,pandas 会将字典的键作为列,将内部字典的键作为行索引

In [3]: pop =  {'Nevda': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 4.7, 2002: 3.6}}

In [4]: frame3 = pd.DataFrame(pop)

In [5]: frame3
Out[5]:
      Nevda  Ohio
2000    NaN   1.5
2001    2.4   4.7
2002    2.9   3.6

内部字典的键被联合,排序后形成了结果的索引。如果已经显式指明索引的话,内部字典的键将不会被排序:

In [22]: pd.DataFrame(pop, index = [2001,2002, 2003])
Out[22]:
      Nevda  Ohio
2001    2.4   4.7
2002    2.9   3.6
2003    NaN   NaN

包含Series的字典也可以用于构造DataFrame

 frame3['Nevda'][:1]
Out[9]:
2000   NaN
Name: Nevda, dtype: float64
In [13]: frame3['Nevda'][:3]
Out[13]:
2000    NaN
2001    2.4
2002    2.9
Name: Nevda, dtype: float64
In [20]: frame3['Nevda'][-2:]
Out[20]:
2001    2.4
2002    2.9
Name: Nevda, dtype: float64

DataFrame 有索引和列,index,columns

索引对象

pandas 中的索引对象是用于存储轴标签和其他元数据的(例如轴名称或标签),在构造Series或DataFrame时,所使用的任意数组或标签序列都可以在内部转换为索引对象。
索引对象是不可变的。

索引对象方法和属性
方法描述
append将额外的索引对象粘贴到原索引后,产生一个新的索引
difference两个索引差集
intersection交集
union并集
isin是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值