美文网首页
pandas学习-3

pandas学习-3

作者: 蓝剑狼 | 来源:发表于2018-08-12 21:19 被阅读3次

    Pandas数据结构Series:基本技巧

    数据查看 / 重新索引 / 对齐 / 添加、修改、删除值
    # 数据查看
    
    s = pd.Series(np.random.rand(50))
    print("1".center(40,'*'))
    print(s.head(3))
    print("2".center(40,'*'))
    print(s.tail())
    # .head()查看头部数据
    # .tail()查看尾部数据
    # 默认查看5条
    #执行结果
    *******************1********************
    0    0.202699
    1    0.201590
    2    0.647586
    dtype: float64
    *******************2********************
    45    0.813147
    46    0.222506
    47    0.698029
    48    0.221253
    49    0.612971
    dtype: float64
    
    # 重新索引reindex
    # .reindex将会根据索引重新排序,如果当前索引不存在,则引入缺失值
    
    s = pd.Series(np.random.rand(3), index = ['a','b','c'])
    print("1".center(40,'*'))
    print(s)
    s1 = s.reindex(['c','b','a','d'])
    print("2".center(40,'*'))
    print(s1)
    # .reindex()中也是写列表
    # 这里'd'索引不存在,所以值为NaN
    
    s2 = s.reindex(['c','b','a','d','e'], fill_value = 0)
    print("3".center(40,'*'))
    print(s2)
    # fill_value参数:填充缺失值的值
    #执行结果
    *******************1********************
    a    0.483267
    b    0.427878
    c    0.560759
    dtype: float64
    *******************2********************
    c    0.560759
    b    0.427878
    a    0.483267
    d         NaN
    dtype: float64
    *******************3********************
    c    0.560759
    b    0.427878
    a    0.483267
    d    0.000000
    e    0.000000
    dtype: float64
    
    # Series对齐
    
    s1 = pd.Series(np.random.rand(3), index = ['Jack','Marry','Tom'])
    s2 = pd.Series(np.random.rand(3), index = ['Wang','Jack','Marry'])
    print("1".center(40,'*'))
    print(s1)
    print("2".center(40,'*'))
    print(s2)
    print("3".center(40,'*'))
    print(s1+s2)
    # Series 和 ndarray 之间的主要区别是,Series 上的操作会根据标签自动对齐
    # index顺序不会影响数值计算,以标签来计算
    # 空值和任何值计算结果扔为空值
    #执行结果
    *******************1********************
    Jack     0.358132
    Marry    0.799223
    Tom      0.205242
    dtype: float64
    *******************2********************
    Wang     0.018531
    Jack     0.104008
    Marry    0.984687
    dtype: float64
    *******************3********************
    Jack     0.46214
    Marry    1.78391
    Tom          NaN
    Wang         NaN
    dtype: float64
    
    # 删除:.drop
    
    s = pd.Series(np.random.rand(5), index = list('abcde'))
    print("1".center(40,'*'))
    print(s)
    s1 = s.drop('a')
    s2 = s.drop(['b','e'])
    print("2".center(40,'*'))
    print(s1)
    print("3".center(40,'*'))
    print(s2)
    print("4".center(40,'*'))
    print(s)
    # drop 删除元素之后返回副本(inplace=False)
    #执行结果
    *******************1********************
    a    0.112290
    b    0.157210
    c    0.566828
    d    0.538134
    e    0.030577
    dtype: float64
    *******************2********************
    b    0.157210
    c    0.566828
    d    0.538134
    e    0.030577
    dtype: float64
    *******************3********************
    a    0.112290
    c    0.566828
    d    0.538134
    dtype: float64
    *******************4********************
    a    0.112290
    b    0.157210
    c    0.566828
    d    0.538134
    e    0.030577
    dtype: float64
    
    # 添加
    
    s1 = pd.Series(np.random.rand(3))
    s2 = pd.Series(np.random.rand(3), index = list('abc'))
    print("1".center(40,'*'))
    print(s1)
    print("2".center(40,'*'))
    print(s2)
    s1[5] = 100
    s2['e'] = 100
    print("3".center(40,'*'))
    print(s1)
    print("4".center(40,'*'))
    print(s2)
    # 直接通过下标索引/标签index添加值
    
    s3 = s1.append(s2)
    print("5".center(40,'*'))
    print(s3)
    print("6".center(40,'*'))
    print(s1)
    # 通过.append方法,直接添加一个数组
    # .append方法生成一个新的数组,不改变之前的数组
    # 执行结果
    *******************1********************
    0    0.605710
    1    0.589580
    2    0.450621
    dtype: float64
    *******************2********************
    a    0.549143
    b    0.910563
    c    0.840172
    dtype: float64
    *******************3********************
    0      0.605710
    1      0.589580
    2      0.450621
    5    100.000000
    dtype: float64
    *******************4********************
    a      0.549143
    b      0.910563
    c      0.840172
    e    100.000000
    dtype: float64
    *******************5********************
    0      0.605710
    1      0.589580
    2      0.450621
    5    100.000000
    a      0.549143
    b      0.910563
    c      0.840172
    e    100.000000
    dtype: float64
    *******************6********************
    0      0.605710
    1      0.589580
    2      0.450621
    5    100.000000
    dtype: float64
    
    # 修改
    
    s = pd.Series(np.random.rand(3), index = ['a','b','c'])
    print("1".center(40,'*'))
    print(s)
    s['a'] = 100
    s[['b','c']] = 200
    print("2".center(40,'*'))
    print(s)
    # 通过索引直接修改,类似序列
    # 执行结果
    *******************1********************
    a    0.370475
    b    0.859691
    c    0.411495
    dtype: float64
    *******************2********************
    a      0.370475
    b    200.000000
    c    200.000000
    dtype: float64

    相关文章

      网友评论

          本文标题:pandas学习-3

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