pandas数据结构之series操作

 

      阅读之前假定你已经有了python内置的list和dict的基础.这里内容几乎是官方文档的翻译版本.

 
概览:
 
原来的文档是在一个地方,那边的代码看起来舒服些   https://www.yuque.com/u86460/dgt6mu/bx0m4g
一个要铭记在新的基本特点是 数据对齐
要点:索引,轴标签,生成实例时传入的数据类型
 

#*生成pd.Series(data,index)        data是传入的数据,index是第一列的名称(即标签)      (其他不常用的参数忽略)
#ndarray (data的类型)
>>> pd.Series(np.random.randn(5))
0    1.617186
1    0.326732
2   -0.230443
3   -0.137932
4    0.474872
dtype: float64
>>> pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e'])
a    0.048464
b    1.413755
c    0.036489
d    0.533946
e    0.286384
dtype: float64
如果不指定index,标签默认从0开始
#dict
>>> d = {'b' : 1, 'a' : 0, 'c' : 2}
>>> pd.Series(d)
b    1
a    0
c    2
dtype: int64
index的顺序跟字典key的顺序一样.
>>> pd.Series(d,index=['b', 'c', 'd', 'a'])
b    1.0
c    2.0
d    NaN
a    0.0
dtype: float64
在这里,index顺序跟传入的数据一致.虽然‘d’在字典中不存在,但为了保证数据不丢失,便创建起来,其值为空.这可以理解为数据对齐
     #scalar (标量)
>>> pd.Series(5,index=['a', 'b', 'c', 'd', 'e'])
a    5
b    5
c    5
d    5
e    5
dtype: int64
>>> pd.Series('a',index=['b', 'c', 'd', 'a'])
b    a
c    a
d    a
a    a
dtype: object
一整列的数据都一样
 
 

#*操作
     #ndarray-like
切片,过滤,通过索引取值
>>> se =pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e'])
>>> se[:3]  #slice
a    1.169659
b   -1.557760
c    1.199475
dtype: float64
>>> se[se >se.median()]  #filter
a    1.169659
c    1.199475
dtype: float64
>>> se[[4,3,1]]  #indexing
e   -1.113787
d    0.571881
b   -1.557760
dtype: float64
#dic-like
索引,in 判断
>>> se['a']=12 #indexing
>>> 'e' in se
True
#*计算:矢量加法,数乘,函数
>>> se+se
a    24.000000
b    -3.115519
c     2.398949
d     1.143761
e    -2.227573
dtype: float64
>>> se*4
a    48.000000
b    -6.231039
c     4.797899
d     2.287523
e    -4.455147
dtype: float64
>>> np.exp(se)
a    162754.791419
b         0.210607
c         3.318373
d         1.771596
e         0.328313
dtype: float64
 

#*其他:序列的命名和重命名
>>> s=pd.Series(np.random.randn(5),name='something')
>>> s
0   -0.010572
1   -0.519850
2    0.649738
3   -0.443780
4    0.402685
Name: something, dtype: float64
>>> s2=s.rename('different')
>>> s2
0   -0.010572
1   -0.519850
2    0.649738
3   -0.443780
4    0.402685
Name: different, dtype: float64
变成两个不同的序列
 
 

源码:
import pandas as pdu
import numpy as npa
n
#basic tentet:data aligment/基本的原则:数据对齐m
#point:data types;indexing;axis labeling/alignment]/要点:数据类型,索引,轴标签和对齐

def series():
    #*generate
    #ndarray
    se=pd.Series(np.random.randn(5))
    se =pd.Series(np.random.randn(5),index=['a', 'b', 'c', 'd', 'e'])
    #dict
    d = {'b' : 1, 'a' : 0, 'c' : 2}
    se=pd.Series(d)
    se=pd.Series(d,index=['b', 'c', 'd', 'a'])
    #scalar
    se=pd.Series(5,index=['a', 'b', 'c', 'd', 'e'])

    #*operate
    #ndarrat-like
    se[:3]  #slice
    se[se >se.median()]  #filter
    se[[4,3,1]]  #indexing
    #dict-like
    se['a']=12 #indexing
    'e' in se

    #compute
    se+se
    se*2
    np.exp(se)
posted @ 2018-11-17 14:20  vlj  阅读(3024)  评论(0编辑  收藏  举报