在学习pandas库之前,要先了解NumPy库。
pandas的数据结构
1.Series
2.DataFrame
3.索引
首先学习Series这个结构
先引入本地命名空间
from pandas import Series
import pandas as pd
import Numpy as np
Series是一种类似于一维数据的对象,它由一组数据以及一组与之相关的数据标签组成。
比如:
s = Series([4,7,-5,3])
print s
结果为:
0 4
1 7
2 -5
3 3
dtype: int64
左边为索引,右边为对应的值,dtype为数据类型。这有点像字典,但是比字典灵活多了。
我们可以自定义这个索引,比如:
s = Series([4,7,-5,3],index=['d','c','b','a'])
print s
结果为:
d 4
c 7
b -5
a 3
dtype: int64
还可以这样重命名索引:
s=Series([4,7,-5,3])
s.index=['d','c','b','a']
如何取出Series里面的值呢,也很简单,比如
print s['a']
3
print s['c']
7
print s[['a','b']]
a 3
b -5
dtype: int64
除了取出里面的值,还可以对Series进行运算
如取出大于0的数
print s[s>0]
d 4
c 7
a 3
dtype: int64
又如计算sinx的值
print np.sin(s)
d -0.756802
c 0.656987
b 0.958924
a 0.141120
dtype: float64
这些操作并不会影响它们的索引,也就是说计算出来的结果还是原来的索引
还可以判断数据是否在Series中,比如:
print 'b' in s
True
print 'e' in s
False
既然Series这么好用,那么如果有一个字典,我想转换成Series怎么办呢
可以用以下方法:
sdata={'name':'wzh','sex':'boy','address':'hubei'}
s1=Series(sdata)
print s1
address hubei
name wzh
sex boy
dtype: object
可以看出来,字典中原来的键就是Series中的索引
有时候我们输错了索引会怎么样,比如如下:
s2=Series(data,index=['name','sex','c'])
print s2
name wzh
sex boy
c NaN
dtype: object
出现了一个NaN的值,这表示缺失或者没有
可以用pandas中方法来判断Series中是否有缺失值,比如
print pd.isnull(s2)
name False
sex False
c True
dtype: bool
True就代表是缺失
当然也可以看没有缺失的,比如:
print pd.notnull(s2)
name True
sex True
c False
dtype: bool
此时True就是代表没有缺失的。
Series对象之间还可以进行运算,在运算时还会进行自动对齐不同的索引,就是相同索引之间的值相加,比如:
s1=Series([1,2,3,4],index=['a','b','c','d'])
s2=Series([1,2,3,4],index=['b','c','a','h'])
print s1 + s2
a 4.0
b 3.0
c 5.0
d NaN
h NaN
dtype: float64
我们还可以给这个Series给个名字,还可以给Series对象的索引给个名字,比如:
s1.name='test'
s1.index.name='state'
print s1
state
a 1
b 2
c 3
d 4
Name: test, dtype: int64
网友评论