美文网首页
2.基本数据类型Series和DataFrame

2.基本数据类型Series和DataFrame

作者: soyouwantme | 来源:发表于2018-08-19 16:22 被阅读0次

    Series和DataFrame结构


    DataFrame

    DataFrame数据结构是一种二维的结构。整个DataFrame包括三个部分:

    • 索引(index)
    • 表头(column)
    • 数值(data)

    各列的数据类型可以不同。

    Series

    一维结构,带索引的一维数组,并且其中的数据类型一致。

    DataFrame的任意一行或一列就是一个Series对象,比如我们通过.loc[0]获取到第一个样本:

    sampel = data.loc[0]
    print (sample)
    

    Series对象的表现形式为:索引在左,取值在右。

    从DataFrame中得到的Series会自动分配两个属性:namedtype
    对于输出(print)的Series对象,最后的Name:0表示该样本为第一个样本,dtype:object表示数据类型为object

    可以通过.index.values取出Series数据:

    sample.index
    sample.values
    

    创建Series对象


    最基本方式:

    pd.Series(data,index=index)
    

    其中data可以为:

    • 一个ndarray
    • 一个Python字典
    • 一个标量值

    从ndarray创建

    Pandas支持重复的索引值,index必须与data(ndarry)一样长。

    pd.Series(ndarry,index=['a','a','b','c'])
    

    或者省略index,index会默认为整数0到n-1,n为数据长度。

    pd.Series(ndarry)
    

    从字典创建

    Python字典中的键:值与Series中的索引:值对应。所以可以直接转换:

    d={'a':0.12, 'b':0.33, 'c':-0.17}
    pd.Series(d)
    

    从标量创建

    即用单个数值直接创建:

    pd.Series(2,index=['a','b','c'])
    

    Series对象的相关操作


    数据索引与筛选

    s=pd.Series(np.random.randn(4),index=['a','a','c','d'])
    
    s[0]
    #取第一个值
    s[:2]
    #取第1-3个值
    s[[1,3]]
    #取第1,3个值
    s[s<s.mean()]
    
    s['a']
    
    s[['c','d']]
    
    'c' in s
    #输出:True
    

    算术运算

    s+3
    #s的全部数值+3
    np.abs(s)
    #绝对值
    

    在算术运算中,会自动通过index对齐数据,然后分别对index相同的数据计算。

    唯一值与个数统计

    unique():返回Series去重后的数组。
    values_counts():查看每一个元素(data)的频数。
    astype():类型转换。如:

    s1=s0.astype('float32')
    

    Pandas包含的数据类型:

    类型 说明
    object 字符串或混合类型
    int 整型
    float 浮点型
    datetime 时间类型
    bool 布尔型

    创建DataFrame对象


    pd.DataFrame(data,index=index,columns=cloumns)
    

    data允许为:

    • 包含列表、字典或Series的字典
    • 二维numpy.ndarray
    • 一个Series
    • 另一个DataFrame

    从字典创建

    d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
         'two' : pd.Series([1., 2., 4.], index=['a', 'b', 'd'])}
    df = pd.DataFrame(d)
    

    从Series创建

    s=pd.Series([1,2,3],index=['a','b','c'])
    pd.DataFrame(s,columns=['first'])
    

    DataFrame对象的相关操作


    数据筛选

    df[df['one'] > 1]
    

    删除和添加一列

    df['three'] = df['one'] + df['two']
    df['flag'] = df['one'] > 1
    #
    df.insert(1, 'bar', df['one'])
    #在位置1插入与one包含相同数据的一列bar
    del df['flag']
    #
    bar = df.pop('bar')
    #删除并将删除的值赋给bar
    

    修改列名

    d = {'one':'first'}
    df.rename(columns=d)
    #将one改为first
    

    DataFrame的显示


    DataFrame的显示可以调用pd.set_option()实现。

    参数 含义
    display.max_columns 如果列数超过该值,则使用截断浏览模式,中间的部分样本用省略号略过,默认值为20
    display.max_rows 如果行数超过该值,则使用截断浏览模式,中间的部分样本用省略号略过,默认值为60
    df = pd.read_csv('loandata.csv')
    pd.set_option('display.max_columns', 5)
    pd.set_option('display.max_rows', 4)
    #最大行数为4行,最大列数为5列情况下的截断显示
    

    索引


    索引方法:

    操作 语法 结果
    选取某一列 df[col] Series
    通过标签选取某一行/列 df.loc[label] Series
    通过位置(整数表示)获取某一行/列 df.iloc[loc] Series
    通过切片方式获取多行/列 df[5:10] DataFrame
    通过布尔向量获取多行/列 df[bool_vec] DataFrame

    常用:

    df.iloc[0]
    #通过索引,得到一行的Series
    df.loc['1','name']
    #通过具体值
    

    相关文章

      网友评论

          本文标题:2.基本数据类型Series和DataFrame

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