zoukankan      html  css  js  c++  java
  • Python数据分析之pandas入门

    一、pandas库简介

    pandas是一个专门用于数据分析的开源Python库,目前很多使用Python分析数据的专业人员都将pandas作为基础工具来使用。pandas是以Numpy作为基础来设计开发的,Numpy是大量Python数据科学计算库的基础,pandas以此为基础,在计算方面具有很高的性能。pandas有两大数据结构,这是pandas的核心,数据分析的所有任务都离开它们,分别是Series和DataFrame。
     

    二、pandas库的安装

    paandas安装较为简单,如果使用Anaconda的话,就在终端输入命令 “conda install pandas” 就能安装;如果电脑安装了pip的话,就在终端输入命令 “pip install pandas” 就能安装成功。安装完成后,可以在终端输入 “import pandas as pd” ,测试pandas是否安装成功。
     

    三、Series的使用

    Series用来表示一维数据结构,跟数组类似,它由两个相关联的数组组成,其中一个叫index的数组用来存储标签,这些标签与另一个数组中的元素一一对应。如下图所示:

    声明Series对象时,需要调用Series()构造函数,并传入一个数组作为Series的主数组,比如:
    import pandas as pd
    ser=pd.Series([12,33,55,66])
    print(ser)
    
    '''输出为
    0    12
    1    33
    2    55
    3    66
    dtype: int64
    '''

    运行上面的代码,可以知道,如果不指定标签,那么默认标签就是从0开始递增,我们也可以在声明一个Series对象时给它指定标签:

    import pandas as pd
    ser=pd.Series([12,33,55,66],index=['a','s','d','f'])
    print(ser)
    
    '''输出为:
    a    12
    s    33
    d    55
    f    66
    dtype: int64
    '''
    我们可以通过Series的index很方便得到其内部元素,或者为某元素赋值:

    import pandas as pd
    ser=pd.Series([12,33,55,66])
    print(ser[2])
    ser[2]=99
    print(ser[2])
    
    '''输出为:
    55
    99
    '''
    Series对象可以进行运算,比如加减乘除,也可以使用Numpy中的数学函数来对它进行计算:

    import pandas as pd
    ser=pd.Series([12,33,55,66])
    ser2=ser/2
    print(ser2)
    
    import numpy as np
    print(np.log(ser))
    
    '''输出为:
    0     6.0
    1    16.5
    2    27.5
    3    33.0
    dtype: float64
    0    2.484907
    1    3.496508
    2    4.007333
    3    4.189655
    dtype: float64
    '''
    从上面可以看出,Series对象似乎跟字典很相似,我们可以把Series对象当作字典来使用,我们在创建Series对象时,将创建好的字典传入Series的构造函数即可,这样字典的键就组成了索引数组,每个索引对应的元素就是字典中对应的值:

    import pandas as pd
    dic={'wife':'kathy','son':'mary','mother':'lily','father':'tom'}
    ser=pd.Series(dic)
    print(ser)
    
    '''输出为:
    wife      kathy
    son        mary
    mother     lily
    father      tom
    dtype: object
    '''

    四、DataFrame的使用

    DataFrame这种数据结构针对的是多维数据,由按一定顺序排列的多列数据组成,列之间的数据类型会不同,如下图所示:

    从图中可以看出,DataFrame对象有两个索引数组,第一个数组index与行相关,这与Series相似,每个index标签与所在行的所有元素相关联。它的第二个数组包含一系列标签,每个标签下包含一列数据。可以将DataFrame理解为由多个Series对象组成的字典,每一列的名称为字典的键,Series作为字典的值。
    创建DataFrame对象的常用方法就是传递一个字典对象给DataFrame()构造函数:

    import pandas as pd
    dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['','','','']}
    frame=pd.DataFrame(dic)
    print(frame)
    
    '''输出为:
       name  age sex
    0   tom   14   男
    1  mary   15   男
    2  john   77   女
    3  mike   45   男
    '''
    跟Series对象类似。DataFrame如果没有明确指定标签,那么它的默认标签也是从0开始递增。如果我们想知道DataFrame对象所有列的名称,则调用columns属性就可以了,获取索引列表的话就调用index属性,调用values属性将获取所有的元素。可以给DateFrame对象添加列:

    import pandas as pd
    dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['','','','']}
    frame=pd.DataFrame(dic)
    frame['weight']=[89,99,145,123]
    print(frame)
    
    '''输出为:
       name  age sex  weight
    0   tom   14   男      89
    1  mary   15   男      99
    2  john   77   女     145
    3  mike   45   男     123
    '''
    在数据处理中,有有时也会用到DataFrame的转置操作,即把行变为列,列变为行,调用DataFrame的T属性即可完成转置:

    import pandas as pd
    dic={'name':['tom','mary','john','mike'],'age':[14,15,77,45],'sex':['','','','']}
    frame=pd.DataFrame(dic)
    print(frame.T)
    
    '''输出为:
            0     1     2     3
    name  tom  mary  john  mike
    age    14    15    77    45
    sex     男     男     女     男
    '''

    五、Series与DataFrame对象之间的运算

    pandas允许Series对象与DataFrame对象进行运算,定义Series和DataFrame对象时,把Series对象的索引和DataFrame的列名称保持一致:

    import pandas as pd
    import numpy as np
    frame=pd.DataFrame(np.arange(16).reshape((4,4)),index=['age','name','sex','weight'],columns=['john','tom','mary','cathy'])
    print(frame)
    ser=pd.Series(np.arange(4),index=['john','tom','mary','cathy'])
    print(ser)
    res=frame-ser
    print(res)
    
    '''输出为:
            john  tom  mary  cathy
    age        0    1     2      3
    name       4    5     6      7
    sex        8    9    10     11
    weight    12   13    14     15
    
    john     0
    tom      1
    mary     2
    cathy    3
    dtype: int32
    
            john  tom  mary  cathy
    age        0    0     0      0
    name       4    4     4      4
    sex        8    8     8      8
    weight    12   12    12     12
    '''
    可以看出,DataFrame对象的各元素分别减去了Series对象中索引与之相同的元素,DataFrame对象每一列的所有元素都执行了减法操作。

  • 相关阅读:
    sp2010 升级sp2013 用户无法打开网站
    powerviot install in sharepoint 2013
    can not connect cube in performancce dashboard
    westrac server security configure user info
    添加报表服务在多服务器场
    sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
    delete job definition
    目前付款申请单内网打开慢的问题
    item style edit in sharepoint 2013
    Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  • 原文地址:https://www.cnblogs.com/IAMTOM/p/10216337.html
Copyright © 2011-2022 走看看