zoukankan      html  css  js  c++  java
  • 利用python进行数据分析之pandas库的应用(一)

    一、pandas的数据结构介绍

    Series

    Series是由一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据索引构成。仅由一组数据可产生最简单的Series。

    obj=Series([4,5,-7,6])

    Series字符串表现形式为索引在左边,值在右边。

    通过Series的index方法获取索引,values方法获取值。可通过索引的方式获取Series中的单个或者一组值

    >>>obj2
    a    4
    b    7
    c   -5
    d    3
    dtype: int64
    #可以通过索引的方式获取值
    >>> obj2['a'] 4

    Series的数组运算会保留索引与值的连接

    >>> obj2=Series([4,7,-5,3],index=['d','b','a','c'])
    >>> obj2
    d    4
    b    7
    a   -5
    c    3
    dtype: int64
    >>> obj2[obj2>0]
    d    4
    b    7
    c    3
    dtype: int64
    >>> obj2*2
    d     8
    b    14
    a   -10
    c     6
    dtype: int64

    如果数据存放在一个字典中,可以根据这个字典来创建Series,Series中的索引就是原字典的键,

    >>> sdata={'ohio':35000,'texas':71000,'oregon':16000,'utah':5000}
    >>> obj3=Series(sdata)
    >>> obj3
    ohio      35000
    oregon    16000
    texas     71000
    utah       5000
    dtype: int64
    #如果指定索引,则会找出匹配值

     >>> obj4=Series(sdata,index=['california','ohio','oregon','texas'])
      >>> obj4
      california NaN
      ohio 35000
      oregon 16000
      texas 71000
      dtype: float64

    对众多情况而言,Series最重要的功能是在算术运算中会自动对齐不同的索引数据:

    >>> obj3+obj4
    california       NaN
    ohio           70000
    oregon         32000
    texas         142000
    utah             NaN
    dtype: float64

    DataFrame

    DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔型)。DateFrame既有行索引也有列索引,可以被看作为由Series组成的字典。

    构建DataFrame:

    1、直接传入一个由等长列表或numpy数组组成的字典,        

    data={'state':['ohio','ohio','ohio','nevada','nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}
    frame=DataFrame(data)

     >>> frame
         pop state year
      0 1.5 ohio 2000
      1 1.7 ohio 2001
      2 3.6 ohio 2002
      3 2.4 nevada 2001
      4 2.9 nevada 2002

     #可指定序列,DataFrame的列会按照指定的顺序进行排列:  

      >>> DataFrame(data,columns=['year','state','pop'])

     year state pop
      0 2000 ohio 1.5
      1 2001 ohio 1.7
      2 2002 ohio 3.6
      3 2001 nevada 2.4
      4 2002 nevada 2.9

     #如果传入的数据找不到,就会NA值

     >>> frame2=DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])

     >>> frame2

         year state pop debt
     one 2000 ohio 1.5 NaN
     two 2001 ohio 1.7 NaN
     three 2002 ohio 3.6 NaN
     four 2001 nevada 2.4 NaN
     five 2002 nevada 2.9 NaN

    #通过类似字典标记的方式或属性的方式,可,以将DataFrame的列获取为一个Series,返回的Series与原来有相同的索引,且name属性已指定

     >>> frame2.year

     one 2000
     two 2001
     three 2002
     four 2001
     five 2002
     Name: year, dtype: int64

     >>> frame2['state']

     one ohio
     two ohio
     three ohio
     four nevada
     five nevada
     Name: state, dtype: object

    #行也可以通过位置或名称的方式进行获取比如索引字段ix

     >>> frame2.ix['three']

     year 2002
     state ohio
     pop 3.6
     debt NaN
     Name: three, dtype: object

    #列可以通过赋值的方式进行修改

     >>> frame2['debt']=16.5
     >>> frame2

         year state pop debt
     one 2000 ohio 1.5 16.5
     two 2001 ohio 1.7 16.5
     three 2002 ohio 3.6 16.5
     four 2001 nevada 2.4 16.5
     five 2002 nevada 2.9 16.5

    #为不存在的列赋值会创建出一个新列,关键词del用于删除列

    >>> frame2['eastern']=frame2.state=='ohio'

    >>> frame2
         year state pop debt eastern
     one 2000 ohio 1.5 16.5 True
     two 2001 ohio 1.7 16.5 True
     three 2002 ohio 3.6 16.5 True
     four 2001 nevada 2.4 16.5 False
     five 2002 nevada 2.9 16.5 False

    >>> del frame2['eastern']

    >>> frame2
         year state pop debt
     one 2000 ohio 1.5 16.5
     two 2001 ohio 1.7 16.5
     three 2002 ohio 3.6 16.5
     four 2001 nevada 2.4 16.5
     five 2002 nevada 2.9 16.5

     2、另一种常见的数据形式是嵌套字典,传入时会将外层字典作为列,内层的的键则作为行索引

    >>> pop={'nevada':{2001:2.4,2002:2.9},'ohio':{2000:1.5,2001:1.7,2002:3.6}}
    >>> frame3=DataFrame(pop)
    >>> frame3
          nevada  ohio
    2000     NaN   1.5
    2001     2.4   1.7
    2002     2.9   3.6
    >>> frame3.T

            2000 2001 2002
     nevada NaN 2.4 2.9
     ohio 1.5 1.7 3.6

     索引对象介绍

    pandas的索引对象负责管理轴标签和其他元数据,构建Series或DataFrame时,所用到的任何数组或其他序列标签都会被转换成一个Index。

    >>>obj=Series(range(3),index=['a','b','c'])
    >>> index=obj.index
    >>> index[1:]
    Index([u'b', u'c'], dtype='object')
    #index对象不可修改,只有这样才能使index对象在多个数据结构之间安全共享
  • 相关阅读:
    HTMLParser使用
    SpringMVC学习系列(6) 之 数据验证
    SpringMVC学习系列 之 表单标签
    开源OSS.Social微信项目解析
    源码分析——核心机制
    Struts2 源码分析——过滤器(Filter)
    调结者(Dispatcher)之执行action
    配置管理之PackageProvider接口
    源码分析——Action代理类的工作
    DefaultActionInvocation类的执行action
  • 原文地址:https://www.cnblogs.com/splended/p/5191000.html
Copyright © 2011-2022 走看看