美文网首页
pandas里的数据结构Series

pandas里的数据结构Series

作者: 崔吉龙 | 来源:发表于2019-03-08 11:11 被阅读0次

    问题描述

    因为pandas是基于python的,所有在做机器学习项目时,最基本的数据结构时list,虽然list比较简单易用,但是用来做数据科学还是需要很多改进的地方。在机器学习的几个库中,numpy有最简单高效的narray,pandas有更加高效的Series。今天我们就来学习一下Series。

    Series定义

    Series是带有特殊索引的数组。回忆一下,我们知道数组ndarray是带有索引index(0~n-1)的数据列表。而Series是在ndarray基础上,可以自定义索引。

    通过list创建Series

    from pandas import Series, DataFrame
    import port pandas as pd
    
    # 通过list创建Series
    ser1 = Series([1,2,3,4])
    print(ser1)
    

    输出结果为

    0    1
    1    2
    2    3
    3    4
    dtype: int64
    

    对比一下numpy的ndarray

    import numpy as np
    array1 = np.array([1,2,3,4])
    print(array1)
    

    输出结果为

    [1 2 3 4]
    

    当我们不特别指定索引index时,Series和ndarray功能基本相同,都是以数字0~n-1作为索引的。下面我们测试一下使用特定索引值。

    ser2 = pd.Series([1,2,3,4], index=['a','b','c','d'])
    

    输出结果为

    a    1
    b    2
    c    3
    d    4
    dtype: int64
    

    可以看出索引值已经变成了字母'a,b,c,d'

    通过Dictionary创建Series

    通过diction创建索引时,dictionary的atrribute自动成为索引值。

    sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
    ser3 = Series(sdata)
    print(ser3)
    

    输出:

    Ohio      35000
    Oregon    16000
    Texas     71000
    Utah       5000
    dtype: int64
    

    我们也可以在用dictionary创建Series时,指定索引值

    index = ['California', 'Ohio', 'Oregon', 'Texas']
    

    输出为:

    California        NaN
    Ohio          35000.0
    Oregon        16000.0
    Texas         71000.0
    dtype: float64
    

    可以看出索引Series是以索引排序进行数据展示的,如果这个索引对应的值不存在,那么就要显示成NaN,代表这个索引的值为空。我们可以使用pandas特有的函数isnull来检测哪些值为空。

    pd.isnull(ser4)
    

    输出为:

    California     True
    Ohio          False
    Oregon        False
    Texas         False
    dtype: bool
    

    Series的使用

    首先我们可以通过自定义的index来访问Series元素

    ser1[0]
    Out[195]: 1
    
    ser2['a']
    Out[196]: 1
    
    ser2[['a','b']]
    Out[197]: 
    a    1
    b    2
    dtype: int64
    
    ser2.values
    Out[198]: array([1, 2, 3, 4])
    
    ser2.index
    Out[199]: Index(['a', 'b', 'c', 'd'], dtype='object')
    

    其次我们还可以像ndarray那样参与矩阵运算

    In [200]: ser2[ser2 > 2]
    Out[200]: 
    c    3
    d    4
    dtype: int64
    
    In [201]: ser2 * 2
    Out[201]: 
    a    2
    b    4
    c    6
    d    8
    dtype: int64
    
    In [202]: np.exp(ser2)
    Out[202]: 
    a     2.718282
    b     7.389056
    c    20.085537
    d    54.598150
    dtype: float64
    
    In [203]: 
    

    相关文章

      网友评论

          本文标题:pandas里的数据结构Series

          本文链接:https://www.haomeiwen.com/subject/vfeseqtx.html