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对象每一列的所有元素都执行了减法操作。

  • 相关阅读:
    二维数组的最大联通子数组
    四则运算网页终结版
    Python+Selenium进阶版(四)-封装一个自己的类-浏览器引擎类
    Python+Selenium进阶版(三)- 二次封装Selenium中几个方法
    Python+Selenium进阶版(二)- Python中类/函数/模块的简单介绍
    Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用
    Python+Selenium学习-Xpat增强梳理版
    Python+Selenium练习(三十一)- 截图并保存
    Python+Selenium练习(三十)- 获取页面元素的href属性
    Python+Selenium练习(二十九)- 获取当前页面全部图片信息
  • 原文地址:https://www.cnblogs.com/IAMTOM/p/10216337.html
Copyright © 2011-2022 走看看