美文网首页
Python--pandas--基础概念学习

Python--pandas--基础概念学习

作者: 李小李的路 | 来源:发表于2019-06-05 22:34 被阅读0次

    pandas概述

    1.Pandas是Python的一个数据分析包,该工具为解决数据分析任务而创建。
    2.Pandas纳入大量库和标准数据模型,提供高效的操作数据集所需的工具。
    3.Pandas提供大量能使我们快速便捷地处理数据的函数和方法。
    4.Pandas是字典形式,基于NumPy创建,让NumPy为中心的应用变得更加简单。

    pandas的数据结构

    两个主要的数据结构:Series和DataFrame。

    Series结构

    • Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成,仅由一组数据即可产生最简单的Series.
    • Series的字符串表现形式为:索引在左边,值在右边。如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表现形式和索引对象:

    Series入门级api如下:

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2019-06-05 21:45
    # @Author  : LiYahui
    # @Description : pandas series demo
    import pandas as pd
    import numpy as np
    
    # 直接创建Series,采用默认的索引值
    series1=pd.Series([2,4,5,7,8,6])
    print(series1)
    '''
    0    2
    1    4
    2    5
    3    7
    4    8
    5    6
    dtype: int64
    '''
    print(series1.values)  # [2 4 5 7 8 6]
    print(series1.index) # RangeIndex(start=0, stop=6, step=1)
    #创建指定索引值的Series
    series2=pd.Series([2,4,5,7,8,6],index=['a','b','c','d','e','f'])
    print(series2)
    '''
    a    2
    b    4
    c    5
    d    7
    e    8
    f    6
    dtype: int64
    '''
    print(series2.index)  #Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
    # 利用索引的方式选取Series的单个或一组值
    print(series2['c'])  # 5
    print(series2[['a','b','c','f']])   # 选取的列的值必须在[] 内进行包括
    '''
    a    2
    b    4
    c    5
    f    6
    dtype: int64
    '''
    #numpy数组运算(布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接
    print(series2[series2>5])
    '''
    d    7
    e    8
    f    6
    dtype: int64
    '''
    print(series2*2)
    '''
    a     4
    b     8
    c    10
    d    14
    e    16
    f    12
    dtype: int64
    '''
    print(np.exp(series2))
    '''
    a       7.389056
    b      54.598150
    c     148.413159
    d    1096.633158
    e    2980.957987
    f     403.428793
    dtype: float64
    '''
    #可以将Series看成是一个有定长的有序字典,因为它是索引值到数据值的一个映射
    #因此,一些字典函数也可以在这里使用:
    'a' in series2        #return:True
    'h' in series2     #return:False
    2 in series2.values   #return:True
    
    #利用字典创建Series
    dic={'l':1,'z':2,'h':3}
    series3=pd.Series(dic)
    print(series3)
    '''
    l    1
    z    2
    h    3
    dtype: int64
    '''
    #若索引比字典的索引多,则与字典索引相匹配的则会被找到,并放置到相应的位置中
    #而对应字找不到的索引,其结果则为NaN(即非数字,Not a Number,在pandas中,用于表示缺失或NA值)
    ind=['l','z','h','a']
    series4=pd.Series(dic,index=ind)
    print(series4)
    '''
    l    1.0
    z    2.0
    h    3.0
    a    NaN
    dtype: float64
    '''
    #pandas中isnull和notnull函数用于检测缺失数据:
    pd.isnull(series4)    #等效于: obj4.isnull()
    pd.notnull(series4)
    """
    pd.isnull(series4):        pd.notnull(series4)
    l    False              l     True
    z    False              z     True
    h    False              h     True
    a     True              a     False
    dtype: bool             dtype: bool
    
    """
    
    #算术运算中自动对齐不同索引的数据
    print(series4+series3)
    '''
    a    NaN
    h    6.0
    l    2.0
    z    4.0
    dtype: float64
    '''
    #Series对象本身及其索引都有一个name属性
    series4.name='myname'
    series4.index.name="letter"
    """series4=
    letter
    l    1.0
    z    2.0
    h    3.0
    a    NaN
    Name: myname, dtype: float64
    """
    # 索引可以通过赋值的方式进行改变
    series4.index=['li','zi','hua','a']
    """series4=
    li     1.0
    zi     2.0
    hua    3.0
    a      NaN
    Name: myname, dtype: float64
    """
    

    DataFrame结构

    • DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(公用同一个索引)。跟其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或者别的一维数据结构)。
      其中,可以输入给DataFrame构造器的数据类型及相关说明:
    类型 说明
    二维ndarray 数据矩阵,可以传入行标和列标
    由数组、列表、元组组成的字典 每个序列会变成DataFrame的一列,所有的序列的长度必须相同
    Numpy的结构化/记录的数组 类似于 "由数组组成的字典"
    由Series组成的字典 每个Series都会成一列,如果没有显示的指定索引,则各Series的索引会被合并成结果的行索引
    由字典组成的字典 各内层字典会成一列。键会被合并成结果的行索引,根由‘Series组成的字典’的情况一样
    由列表和元组组成的列表 类似于二维 “ndarray”
    另一个DataFrame 改DataFrame的索引会被引用,除非显示了指定其他的索引
    numpy的MaskedArray 类似于‘二维ndarray’的情况,只是掩值码会在DataFrame中变成NA/缺失值

    DataFrame入门级api

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time    : 2019-06-05 22:20
    # @Author  : LiYahui
    # @Description :  dataframe_demo
    import pandas as pd
    import numpy as np
    
    # 构建DataFrame
    # 最常用的一种是直接传入一个由等长列表或numpy数组组成的字典:
    
    data = {'names': ['Bob', 'Jane', 'Jack', 'Ann'],
            'sex': ['M', 'F', 'M', 'F'],
            'age': [21, 30, 26, 28]}
    df1 = pd.DataFrame.from_dict(data)  # 和下句等价
    df1 = pd.DataFrame(data)
    # print(df1)
    # 没有指定索引,会自动加上索引,且全部列会被有序排列
    '''
      names sex  age
    0   Bob   M   21
    1  Jane   F   30
    2  Jack   M   26
    3   Ann   F   28
    '''
    # 若指定列序列,则会按照指定顺序排列
    df2 = pd.DataFrame(data, columns=['names', 'sex', 'age'])
    # df2=pd.DataFrame.from_dict(data,columns=['names','sex','age'])  #报错
    # print(df2)
    '''
      names sex  age
    0   Bob   M   21
    1  Jane   F   30
    2  Jack   M   26
    3   Ann   F   28
    '''
    # 若传入列在数据中找不到,会返回NA值,指定列和索引
    df3 = pd.DataFrame(data, columns=['names', 'sex', 'age', 'id'], index=['a', 'b', 'c', 'd'])
    
    # print(df3)
    '''
      names sex  age   id
    a   Bob   M   21  NaN
    b  Jane   F   30  NaN
    c  Jack   M   26  NaN
    d   Ann   F   28  NaN
    '''
    # 通过类似字典标记或属性的方式,可以获取Series(列数据):
    df4 = df3['sex']
    # print(df4)
    '''
    a    M
    b    F
    c    M
    d    F
    Name: sex, dtype: object
    '''
    df5 = df3.age
    # print(df5)
    '''
    a    21
    b    30
    c    26
    d    28
    Name: age, dtype: int64
    '''
    # 嵌套的嵌套序列数据结构
    city_data = {'城市': pd.Series(['北京', '上海', '深圳', '成都', '杭州'], index=['a', 'b', 'c', 'd', 'e']),
                 '人口/千万': pd.Series([2171, 2415, 1191, 901,899], index=['a', 'b', 'c', 'd', 'e']),
                 '年份': pd.Series([2015, 2016, 2015, 2016, 2015], index=['a', 'b', 'c', 'd', 'e'])
                 }
    df6 = pd.DataFrame(city_data)
    print(df6)
    '''
       城市  人口/千万    年份
    a  北京   2171  2015
    b  上海   2415  2016
    c  深圳   1191  2015
    d  成都    901  2016
    e  杭州    899  2015
    '''
    

    相关文章

      网友评论

          本文标题:Python--pandas--基础概念学习

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