当前位置 : 主页 > 编程语言 > java >

初识pandas

来源:互联网 收集:自由互联 发布时间:2022-06-23
​ pandas基于numpy进行开发,是python数据分析的核心包,针对结构化数据,提供了一系列灵活且强大的数据分析功能。在pandas中,提供了以下两种基本的数据结构 Series DataFrame 熟悉R的朋友

pandas基于numpy进行开发,是python数据分析的核心包,针对结构化数据,提供了一系列灵活且强大的数据分析功能。在pandas中,提供了以下两种基本的数据结构

  • Series
  • DataFrame
  • 熟悉R的朋友,理解这两个概念非常简单,Series是一维结构,且带有标签,其中的元素都是同种类型,类比R语言中的向量,而DataFrame从名字看更加直观,类比R语言中的data.frame数据框,DataFrame的每一列其实就是一个Series对象。Series对象示例如下

    >>> import pandas as pd
    >>> import numpy as np
    >>> s = pd.Series([1, 2, 3, np.nan, 5])
    >>> s
    0 1.0
    1 2.0
    2 3.0
    3 NaN
    4 5.0
    dtype: float64
    # name参数指定series的名称
    >>> s = pd.Series(data=[1, 2, 3, np.nan, 5],name='A')
    >>> s
    0 1.0
    1 2.0
    2 3.0
    3 NaN
    4 5.0
    Name: A, dtype: float64
    # data参数指定数据
    # index参数指定标签
    # 默认标签类似数组的下标索引
    >>> s = pd.Series(data=[1, 2, 3, np.nan, 5],index=['A','B','C', 'D', 'E'])
    >>> s
    A 1.0
    B 2.0
    C 3.0
    D NaN
    E 5.0
    dtype: float64
    # 通过下标或者标签名字可以访问其中的元素
    >>> s[0]
    1.0
    >>> s['A']
    1.0

    pandas中的缺失值用NaN来表示,DataFrame对象示例如下

    >>> df = pd.DataFrame(np.random.rand(5,5))
    >>> df
    0 1 2 3 4
    0 0.163853 0.478228 0.096328 0.390939 0.528931
    1 0.483235 0.964965 0.946697 0.617395 0.149224
    2 0.720721 0.559443 0.346435 0.486527 0.390008
    3 0.711582 0.519249 0.005936 0.866858 0.836957
    4 0.897743 0.972732 0.537487 0.276900 0.948538
    # index 参数指定行标签, 默认值为从0开始的下标
    # columns参数指定列标签,默认值为从0开始的下标
    >>> df = pd.DataFrame(np.random.rand(5,5),index=['A1','A2','A3','A4','A5'], columns=['A','B','C','D','E'])
    >>> df
    A B C D E
    A1 0.418639 0.536177 0.575832 0.836404 0.061494
    A2 0.911322 0.062853 0.840488 0.051903 0.559243
    A3 0.213690 0.797220 0.891103 0.232472 0.128613
    A4 0.238780 0.397183 0.289779 0.370459 0.264069
    A5 0.575950 0.311570 0.215405 0.793575 0.994698
    # 通过列标签访问对应的列
    # 输出内容就是一个Series对象
    >>> df['A']
    A1 0.418639
    A2 0.911322
    A3 0.213690
    A4 0.238780
    A5 0.575950
    Name: A, dtype: float64
    >>> df.A
    A1 0.418639
    A2 0.911322
    A3 0.213690
    A4 0.238780
    A5 0.575950
    Name: A, dtype: float64
    >>> df.get('A')
    A1 0.700150
    A2 0.903883
    A3 0.015775
    A4 0.006292
    A5 0.239663
    Name: A, dtype: float64

    DataFrame是pandas操作的核心, 支持异构数据,即不同的列对应不同的数据类型,示例如下

    >>> df = pd.DataFrame({'A':[1, 2, 3, 4], 'B':['Andy', 'Rose', 'June', 'July']})
    >>> df
    A B
    0 1 Andy
    1 2 Rose
    2 3 June
    3 4 July

    这样的结构更具包容性,适合处理类似excel文件内容的数据。DataFrame的基本操作方法如下 


    1. 基本属性

    DataFrame也具有numpy数组类似的维度,形状等属性,示例如下

    # 维度
    >>> df.ndim
    2
    # 数值总数
    >>> df.size
    25
    # 每个维度的尺寸
    >>> df.shape
    (5, 5)
    # 每一列的数据类型
    >>> df.dtypes
    A float64
    B float64
    C float64
    D float64
    E float64
    dtype: object
    # 数据框中的所有值
    >>> df.values
    array([[0.70015033, 0.12960382, 0.871099 , 0.86146233, 0.33794277],
    [0.90388331, 0.40102109, 0.3046794 , 0.40498749, 0.55128064],
    [0.01577541, 0.70574337, 0.99492806, 0.28706767, 0.62816839],
    [0.00629215, 0.488683 , 0.5385188 , 0.15954784, 0.15361006],
    [0.23966275, 0.54685001, 0.32405166, 0.81499923, 0.53875313]])
    # 数据框的行和列标签
    >>> df.axes
    [Index(['A1', 'A2', 'A3', 'A4', 'A5'], dtype='object'), Index(['A', 'B', 'C', 'D', 'E'], dtype='object')]
    # 行标签
    >>> df.index
    Index(['A1', 'A2', 'A3', 'A4', 'A5'], dtype='object')
    # 行标签
    >>> df.keys()
    Index(['A', 'B', 'C', 'D', 'E'], dtype='object')
    # 列标签
    >>> df.columns
    Index(['A', 'B', 'C', 'D', 'E'], dtype='object')

    2. 查看内容

    实际中的数据框框往往包含非常多的行和列,通过head和tail方法可以简单查看头尾的几行,示例如下

    >>> df.head(n=1)
    A B C D E
    A1 0.418639 0.536177 0.575832 0.836404 0.061494
    >>> df.head(n=2)
    A B C D E
    A1 0.418639 0.536177 0.575832 0.836404 0.061494
    A2 0.911322 0.062853 0.840488 0.051903 0.559243
    >>> df.tail(n=3)
    A B C D E
    A3 0.21369 0.797220 0.891103 0.232472 0.128613
    A4 0.23878 0.397183 0.289779 0.370459 0.264069
    A5 0.57595 0.311570 0.215405 0.793575 0.994698

    3. 访问元素

    基本的访问元素通过行列的索引或标签来进行,示例如下

    # 根据行和列的标签来访问对应元素
    >>> df.at['A1', 'A']
    0.7001503320168031
    # 根据行和列的索引来访问对应元素
    >>> df.iat[0, 0]
    0.7001503320168031
    # 根据行和列的标签来访问对应元素
    >>> df.loc['A1','A']
    0.7001503320168031
    # 根据行和列的索引来访问对应元素
    >>> df.iloc[0,0]
    0.7001503320168031

    4. 二元运算

    对两个数据框进行运算,常用的加减乘除算数运算,示例如下

    >>> a = pd.DataFrame(np.random.rand(4,4))
    >>> b = pd.DataFrame(np.random.rand(4,4))
    # 加法
    >>> a.add(b)
    0 1 2 3
    0 1.357769 1.684003 0.500581 0.814958
    1 0.900818 1.138432 1.898524 1.000987
    2 1.105629 1.076538 0.729917 0.682571
    3 0.564739 1.017597 0.864299 0.801017
    # 等价二元操作符
    >>> a + b
    0 1 2 3
    0 1.357769 1.684003 0.500581 0.814958
    1 0.900818 1.138432 1.898524 1.000987
    2 1.105629 1.076538 0.729917 0.682571
    3 0.564739 1.017597 0.864299 0.801017
    # 减法
    >>> a.sub(b)
    # 乘法
    >>> a.mul(b)
    # 除法
    >>> a.div(b)

    逻辑运算,示例如下

    # 大于
    >>> a.gt(b)
    0 1 2 3
    0 True True False False
    1 False False False False
    2 True False True True
    3 True False False True
    # 小于
    >>> a.lt(b)
    # 小于等于
    >>> a.le(b)
    # 大于等于
    >>> a.ge(b)
    # 等于
    >>> a.eq(b)
    # 不等于
    >>> a.ne(b)

    5. 合并数据框

    # append 函数,将新的数据框追加为行
    >>> a = pd.DataFrame(np.random.rand(2, 2), columns=['A', 'B'])
    >>> b = pd.DataFrame(np.random.rand(2, 2), columns=['A', 'B'])
    >>> a
    A B
    0 0.529614 0.712904
    1 0.969706 0.943299
    >>> b
    A B
    0 0.626073 0.293426
    1 0.952565 0.251707
    >>> a.append(b)
    A B
    0 0.529614 0.712904
    1 0.969706 0.943299
    0 0.626073 0.293426
    1 0.952565 0.251707
    # assign 函数,为数据框新增列
    >>> a.assign(C=pd.Series([1,2]))
    A B C
    0 0.529614 0.712904 1
    1 0.969706 0.943299 2
    # 多列就是多个关键词参数
    >>> a.assign(C=pd.Series([1,2]),D=[1,2])
    A B C D
    0 0.529614 0.712904 1 1
    1 0.969706 0.943299 2 2

    DataFrame相比numpy ndarray, 更加嵌合实际数据,用pandas来分析实际数据更加的便利,pandas中也提供了很多的统计分析函数以及灵活的操作方法,更多的技巧后续在详细介绍。

    ·end·


    初识pandas_公众号

    一个只分享干货的

    生信公众号



    【文章原创作者:阿里云代理 http://www.558idc.com/aliyun.html 网络转载请说明出处】
    上一篇:玩转基因组浏览器之查看MAF文件
    下一篇:没有了
    网友评论