zoukankan      html  css  js  c++  java
  • pandas中的series数据类型

    import pandas as pd
    import numpy as np
    import names
    
    '''
    写在前面的话:
        1、series与array类型的不同之处为series有索引,而另一个没有;series中的数据必须是一维的,而array类型不一定
        2、可以把series看成一个定长的有序字典,可以通过shape,index,values等得到series的属性
    '''
    # 1、series的创建
    '''
    (1)由列表或numpy数组创建
            默认索引为0到N-1的整数型索引,如s1;
            可以通过设置index参数指定索引,如s2;
            通过这种方式创建的series,不是array的副本,即对series操作的同时也改变了原先的array数组,如s3
    (2)由字典创建
            字典的键名为索引,键值为值,如s4;
    '''
    n1 = np.array([1, 4, 5, 67, 7, 43, ])
    s1 = pd.Series(n1)
    # print(s1)
    '''
    0     1
    1     4
    2     5
    3    67
    4     7
    5    43
    dtype: int32
    '''
    s2 = pd.Series(n1, index=['a', 'b', 'c', 'd', 'e', 'f'])
    # print(s2)
    '''
    a     1
    b     4
    c     5
    d    67
    e     7
    f    43
    dtype: int32
    '''
    # print(n1)
    '''
    [ 1  4  5 67  7 43]
    '''
    s1[2] = 100
    s3 = s1
    # print(s3)
    '''
    0      1
    1      4
    2    100
    3     67
    4      7
    5     43
    dtype: int32
    '''
    # print(n1)
    '''
    [  1   4 100  67   7  43]
    '''
    dict1 = {}
    for i in range(10, 15):
        # names.get_last_name(),随机生成英文名字
        dict1[names.get_last_name()] = i
    s4 = pd.Series(dict1)
    # print(s4)
    '''
    Poole     10
    Allen     11
    Davis     12
    Roland    13
    Brehm     14
    dtype: int64
    '''
    # 2、series的索引
    '''
    (1)通过index取值,可以通过下标获取,也可以通过指定索引获取,如s6,s7
    (2)通过.loc[](显示索引)获取,这种方式只能获取显示出来的索引,无法通过下标获取,如s7(推荐)
    (3)隐式索引,使用整数作为索引值,使用.icol[],如s9(推荐)
    '''
    s5 = pd.Series(np.array([1, 5, 9, 7, 6, 4, 52, 8]), index=[list('abcdefgh')])
    # print(s5)
    '''
    a     1
    b     5
    c     9
    d     7
    e     6
    f     4
    g    52
    h     8
    dtype: int32
    '''
    s6 = s5[2]
    # print(s6)
    '''
    9
    '''
    s7 = s5['c']
    # print(s7)
    '''
    c    9
    dtype: int32
    '''
    s8 = s5.loc['c']
    # print(s8)
    '''
    c    9
    dtype: int32
    '''
    s9 = s5.iloc[2]
    # print(s9)
    '''
    9
    '''
    # 3、series的切片
    '''
        1、series的切片和列表的用法类似,不同之处在于建议使用.loc[:]和.iloc[:],如s10和s11。当然直接使用[:]也可以。
        2、当遇到特别长的series,我们支取出前5条或后5条数据时可以直接使用.head()或.tail()
    '''
    s5 = pd.Series(np.array([1, 5, 9, 7, 6, 4, 52, 8]), index=[list('abcdefgh')])
    # print(s5)
    '''
    a     1
    b     5
    c     9
    d     7
    e     6
    f     4
    g    52
    h     8
    dtype: int32
    '''
    s10 = s5.loc['b':'g']
    # print(s10)
    '''
    b     5
    c     9
    d     7
    e     6
    f     4
    g    52
    dtype: int32
    '''
    s11 = s5.iloc[1:7]
    # print(s11)
    '''
    b     5
    c     9
    d     7
    e     6
    f     4
    g    52
    dtype: int32
    '''
    # 4、关于NaN
    '''
        (1)NaN是代表空值, 但不等于None。两者的数据类型不一样,None的类型为<class 'NoneType'>,而NaN的类型为<class 'float'>;
        (2)可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据
    '''
    # print(type(None),type(np.nan))
    '''
    <class 'NoneType'> <class 'float'>
    '''
    s12 = pd.Series([1,2,None,np.nan],index=list('烽火雷电'))
    # print(s12)
    '''
    烽    1.0
    火    2.0
    雷    NaN
    电    NaN
    dtype: float64
    '''
    # print(pd.isnull(s12))
    '''
    烽    False
    火    False
    雷     True
    电     True
    dtype: bool
    '''
    # print(pd.notnull(s12))
    '''
    烽     True
    火     True
    雷    False
    电    False
    dtype: bool
    '''
    # print(s12.notnull())
    '''
    烽     True
    火     True
    雷    False
    电    False
    dtype: bool
    '''
    # print(s12.isnull())
    '''
    烽    False
    火    False
    雷     True
    电     True
    dtype: bool
    '''
    # 取出series中不为空的值
    # print(s12[s12.notnull()])
    '''
    烽    1.0
    火    2.0
    dtype: float64
    '''
    # series的name属性
    '''
    
    '''
    s12.name = '风水'
    # print(s12)
    '''
    烽    1.0
    火    2.0
    雷    NaN
    电    NaN
    Name: 风水, dtype: float64
    '''
  • 相关阅读:
    GhostBSD 3.0RC3,基于GNOME的FreeBSD
    Nagios 3.4.3 发布,企业级监控系统
    Jolokia 1.0.6 发布, JMX远程访问方法
    微软希望开发人员不要使 WebKit 成为新版 IE6
    Kwort Linux 3.5 正式版发布
    EJDB 1.0.24 发布,嵌入式 JSON 数据库引擎
    Pale Moon 15.3 Firefox“苍月”优化版发布
    Galera Load Balancer 0.8.1 发布
    SmartSVN V7.5 正式发布
    PostgresQL建立索引如何避免写数据锁定
  • 原文地址:https://www.cnblogs.com/xshan/p/10289588.html
Copyright © 2011-2022 走看看