zoukankan      html  css  js  c++  java
  • pandas

    主要内容:

    import pandas as pd
    from pandas import Series, DataFrame
    import numpy as np
    

    Series是一种类似与一维数组的对象,由下面两个部分组成:values:一种数据类型;index:相应的数据索引标签.Series的创建

       a :两种创建 方式

        1) 由列表和numpy数组组建,默认索引为0.

    Series(data=[1,2,3,4], index=['ds','dsa','re','gr'], name='haha')
    
    # 使用numpy创建Series
    Series(data=np.arange(10,60,6))
    

        2) 由字典创建: 不能再使用index, 但是依然存在默认索引.  注意: 数据源必须为一维数据

    dic = {
        'math':100,
        'english':50
    }
    Series(data=dic, name='qimo')
    

     b: Series的索引和切片

        1) 显示索引:使用index中的元素作为索引值 使用s.loc: 注意loc中括号中放置的一定是显示索引

        2) 隐式索引: 使用整数作为索引值.使用s.iloc[]

    s = Series(np.random.randint(60,100, size=(5,)), index=['a','b','c','d','e'] )
    s.loc['a']
    
    s.iloc[1]
    s.iloc[[1,2,3]]
    

        3 显示索引切片和隐式索引切片: s.loc['a':'c']

        4)  Series的基本概念

          可以把Series看成一个定长的有序字典 向series增加一行: 相当于给字典增加一组键值对;

    s['g'] = 100
    s
    

          可以通过shape,size, index, values等得到series的属性

    s.index
    s.values
    

          可以使用s.head(), tail分别查看前几个和后几个值

     s.head(3)
    s.tail(3)
    

          对Series元素进行去重

    # 对Series元素进行去重
    s = Series(data=[1,1,2,2,3,3,4,4,4,5,6,7,8,7,7,66,43,342,6665,444,333,444])
    s.unique()    #Series中的去重函数

          空值检测过滤.可以使用pd.isnull(), pd.notnull(), 或s.isnull()

    s1 = Series(data=[1,2,3,4,5],index=['a','b','c','d','e'])
    s2 = Series(data=[1,2,3,4,5],index=['a','b','c','f','g'])
    s = s1+s2
    s# 有空值
    #进行空值过滤
    s.loc[s.notnull()]
    

        5) Series运算

          在运算中自动补齐不同索引的数据

          如果索引不对应,则补nan

    2 DataFrame

      a : DataFrame的概念

          DataFrame是一个表格型的数据结构, 其由按一定顺序排列的多列数据组成.设计初衷是由Series的使用场景从一维拓展到多维. DataFrame既有行索引也有列索引 . index行索引, columns列索引, values值

      b : DataFrame的创建

          最常用的方法是传递一个字典来创建.DataFrame以字典的键作为每一列的名称,以字典的值(一个数组)作为每一列

    dic = {
        'java':[60,70,80],
        'python':[100,100,100]
    }
    DataFrame(data=dic, index=['zhangsan','lisi','wangwu'])

    t

    df = DataFrame(data=np.random.randint(60,100,size=(3,3)),index=['a','b','c'],columns=['A','B','C'])
    

      c : DataFrame索引

          对列进行索引,通过类似字典的方式df['q'] 通过属性的方式 df.q 可以将DataFrame的列获取为一个series,返回的series拥有原DataFrame相同的索引,且name属性也已经设置哈, 就是相应的列名.

    df = DataFrame(data=np.random.randint(60,150,size=(4,2)),index=['chinese','math','english','lizong'],columns=['zhangsan','li'])
    df  
    
    # 对列进行索引
    df['li']
    
    df[['zhangsan','li']]
    
    # 对行进行索引
        -使用.loc[]加index进行索引
        -使用.iloc[]加整数来进行索引
    # 同样返回一个series,index为原来的column
    # 对前两行求索引
      df.iloc[[0,1]]

       d : 切片

          直接用中括号时: 索引表示的是列索引, 切片表示的是行切片

    df = DataFrame(data=np.random.randint(60,150,size=(4,2)),index=['chinese','math','english','lizong'],columns=['zhangsan','li'])
    df  
    
    df['math':'lizong']
    

          在loc和iloc中使用切片(切列): df.loc[:, 'zhangsan':'li']

       e : DataFrame的运算

    df1=df.copy()
    
    df.index=['math','lizong','a','b']
    df1
    
    df1.zhangsan.loc['math']=0
    df1.loc['math','zhangsan']=1
    

      f 创建多层索引

        隐式构造: 最常见的方法就是给DataFrame构造函数的index或者columns参数传递两个或者更多的数组.

    # 创建了一个索引对象,该索引对象为二层索引
    df = DataFrame(np.random.randint(60,100,size=(2,4)),index=['tom','jay'],columns=[['qizhong','qimo','qizhong','qimo'],['chinese','math','chinese','math']])
    df
    

        显示构造: pd.MultIndex.from_

    col = pd.MultiIndex.from_product([['qizhong','qimo'],['chinese','math']])
    df = DataFrame(data=np.random.randint(60,120,size=(2,4)),columns=col, index=['tom','joy'])
    df
    

      h 处理空值,处理丢失数据

        有两种丢失数据: None和np.NaN

    1 None None是Python自带的, 其类型为python object.因此,None不能参与到任何运算中.
    2 np.nan np.nan是浮点类型,能参与到运算中.但计算的结果总是nan
    np.random.seed(10)
    df=DataFrame(np.random.randint(50,200,size=(6,5)), index=['a','d','f','g','t','j'],columns=['D','R','G','E','M'])
    df
    
    # 将某些数组元素赋值为nan
    df.iloc[1,3]=None
    df.iloc[2,2]=np.nan
    df.iloc[4,2]=None
    df
    #处理空值
    df.loc[df.notnull().all(axis=1)]
    

        过滤df中的空值(只保留没有空值的行)

          df.dropna()可以选择过滤的是行还是列: axis=0默认是行,1表示的是列

          df.drop()  通过label指定要删除的行或者列

          df.fillna()  填充函数

    np.random.seed(10)
    df=DataFrame(np.random.randint(50,200,size=(6,5)), index=['a','d','f','g','t','j'],columns=['D','R','G','E','M'])
    df
    # drpna函数过滤空值
    df.dropna(axis=0, inplace=True)
    df
    
    # drop函数去除指定的列
    df.drop(labels='D', axis=1)
    
    
    #填充函数:  fillna():  value和method参数
    df.fillna(method='bfill',axis=0,limit=1)
    
    可以选择向前填充或者向后填充
    method控制填充的方式    bfill  ffill
    

      l pandas的拼接操作:   见数据分析第一天

    pandas的拼接分两种:
        级联: pd.concat,  pd.append
        合并: pd.merge,   pd.join
    

      

     

  • 相关阅读:
    175. Combine Two Tables
    VirtualBox下安装CentOS7系统
    idea配置maven
    idea配置jdk
    SpringBoot在yml中添加自定义配置并识别
    多表联查另一个表的所有
    java后台判断字符串相等 equals
    查询字段内容截取
    idea刷新项目、清除项目缓存
    SpringBoot集成FreeMarker
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10315695.html
Copyright © 2011-2022 走看看