zoukankan      html  css  js  c++  java
  • pandas相关操作

    import pandas as pd
    import numpy as np
    '''
    一.创建df
        1.定义df  :传递字典
        1.1每一列的名称作为键   每个键都有一个数组作为值【key:数组】
        1.2 嵌套字典生成df      一级元素的key作为列名  二级元素的key作为行名
        1.3选择需要的创建df     pd.DataFrame(dict,columns=['key1','key2'])
        1.4指定df的标签(index)pd.DataFrame(dict,columns=['key1','key2'],index = ['one','two',`````])
        
        2.定义df  :数据矩阵 + index  + columns
        2.1 直接传入  值 标签  列名    pd.DataFrame(np.arange(16).reshape(4,4),index=['one','two',....],columns=['object','',..])
        
    二.选取元素
        1.取值
        1.1查看  【标签  列名  值 】  frame.index   frame.columns  frame.values
        1.2取一列 frame[['object1','object2']]   frame.object
        1.3取行 frame[1:3]
        1.4取单个值    frame['object'][2]    df----Series-----索引取值
        
        2.赋值
        
        2.1 给行列标签命名    frame.index,name = 'id'     frame.columns.name = 'item'
        2.2 添加一列          frame['new'] = 12      翻译为      frame['new'] = [12,12,12,12]
        2.3 修改一列          frame['new'] = Series    
        2.4 修改单个值        df --  列series  --  索引      frame['new'][2] = 3
        
        
        3. 判断元素是否在df中
        
        3.1  df = frame.isin([1.0,'pen'])
        
        4.删除列
        4.1 del frame['new']
        
        5.筛选
        5.1 全部筛选   frame[frame<12]
        5.2 筛选某一列 frame[frame.new<12]
        
        6.转置
        frame.T  
        
    三.index对象
        1.确定是否有重复索引    serd.index.is_unique    frame.index.is_unique
        2.对于重复索引     serd['重复索引']  返回一个Series     frame['重复索引']  返回Frame
        3.Series.reindex([索引数组],method='ffill')   frame.reindex([索引数组],method='ffill',columns=['','',....])
        
        4.删除drop()  返回【不包括已删除索引及元素的新对象】 ser.drop(['',''])删除多个索引,要用数组输入
        删除行 :Frame.drop(['','',''])
        删除列 :Frame.drop(['','',''],axis=1)
        
        5.元素级  数据对其及运算(加)
        
        4.1两个series对象   都有的标签,对应数据相加   只有其中一个对象有的index  NaN填充
        4.2两个Frame对象    两个frame都有的index 和 columns  对应元素相加   反之用NaN填充
        
    四.数据结构间的运算   
        1.加减乘除(元素级):【满足广播机制】
        a.add(b)
        sub()
        div()
        mul()
        
    五.函数应用和映射【库函数】
        1.操作元素的函数(通用函数)
            np.sqrt(frame)  ##每个元素的平方根
        2.按行列操作的函数
        f = lambda x:x.max()-x.min()
        frame.apply(f)           ###按行计算
        frame.apply(f,axis=1)    ###按列运算
        
        2.1返回多个值
        def f(x):
            return pd.Series([x.max(),x.min(),],index=['min','max'])
        frame.apply(f)
        
        3.统计函数
        frame.sum()
        frame.mean()
        frame.describe()
        
        
        4.排序
        
        4.1  ser.sort_index()
        4.2  ser.sort_index(axis=1)
        4.3  frame.sort_index()
        4.4  frame.sort_index(axis=1)
        
        4.4  frame.sort_index(by=['columns1','columns2'])
        
        5.排位次    rank
        
        ser.rank()
        ser.rank(mothod=''first)
        ser.rank(ascending=False)
        
        6.相关性corr() 和 协方差  cov()
        
        
        7.NaN数据
        7.1创建np.NaN     pd.series([1,2,3,np.NaN,4],index=[' ',' ',.....])
        7.2过滤NaN        ser.dropna()   ser[ser.notnull()]     frame.dropna()行或列有一个有NaN都会被直接删除
                                                                frame.dropna(how='all')行列所有元素都为NaN时删除
        7.3为NaN填充值
        frame.fillna(0)  所有NaN填充0
        frame.fillna({'ball':1,'mug':0,'pen':99})   不同列的NaN替换成不同的值
        
        
        8.等级索引和分级
        8.1 等级索引:
        mser = pd.Series(np.random.rand(8),index=[['white','white','white','blue','blue','red','red','red'],
                                              ['up','down','right','up','down','up','down','left']])
        white  up       0.322237
               down     0.093246
               right    0.181997
        blue   up       0.887448
               down     0.032504
        red    up       0.612139
               down     0.125961
               left     0.030511
        dtype: float64
        
        print(mser['white'])
        print(mser[:,'up'])
          
        dtype: float64
        up       0.256720
        down     0.849860
        right    0.581021
        dtype: float64
        white    0.256720
        blue     0.412591
        red      0.893404
        dtype: float64
        
        print('选取特定元素:',mser['white','up'])
        选取特定元素: 0.9149258487509073
        
        
    '''
    mser = pd.Series(np.random.rand(8),index=[['white','white','white','blue','blue','red','red','red'],
                                              ['up','down','right','up','down','up','down','left']])
    print(mser)
    print(mser['white'])
    print(mser[:,'up'])
    print('选取特定元素:',mser['white','up'])
    a = mser.unstack()
    print('转化成df:
    ',a)
    '''
    转化成df:            
    down      left     right        up
    blue   0.241679       NaN       NaN  0.025439
    red    0.225099  0.410451       NaN  0.180735
    white  0.266825       NaN  0.536098  0.900275
    '''
    print('df转化成series:
    ',a.stack())
    '''
    df转化成series:
    blue   down     0.241679
           up       0.025439
    red    down     0.225099
           left     0.410451
           up       0.180735
    white  down     0.266825
           right    0.536098
           up       0.900275
    dtype: float64
    
    '''
    
    
    ###行列都定义等级索引
    mframe = pd.DataFrame(np.random.randn(16).reshape(4,4),
                          index=[['white','white','red','red'],['up','down','up','down']],
                          columns=[['pen','pen','paper','paper'],[1,2,1,2]])
    print(mframe)
    '''
                     pen               paper          
                       1         2         1         2
    white up    1.729195 -0.451135 -0.497403 -0.938851
          down -1.267124  0.422545  0.069564 -0.735792
    red   up    0.298684 -0.442771  1.301070  0.234371
          down  2.266180 -0.549653  0.108434 -0.394364
    '''
    
    ###重新调整顺序和为层级排序
    mframe.columns.names=['object','id']   ##列名加分类名
    mframe.index.names=['colors','status'] ##行名加分类名
    print(mframe)
    '''
    object              pen               paper          
    id                    1         2         1         2
    colors status                                        
    white  up      0.288562 -0.519511  0.516333  0.643500
           down    1.759466 -1.194383 -0.624583  1.027694
    red    up      0.425757 -1.028554 -0.660548  1.074917
           down    0.242714 -0.550235 -0.749478 -0.015347
    
    '''
    ##调整顺序   colors和status列换位置  swaplevel
    print(mframe.swaplevel('colors','status'))
    '''
    object              pen               paper          
    id                    1         2         1         2
    status colors                                        
    up     white  -0.937241 -1.051002  0.621721  1.227554
    down   white   0.951904  0.585412 -0.315780 -0.336806
    up     red    -1.824083  0.284429  0.310883  0.031538
    down   red     0.851415  0.598169  1.967784 -0.421712
    '''
    '
  • 相关阅读:
    JPA总结——实体关系映射(一对多@OneToMany)
    JPA——映射持久化对象(Entity)
    jackson annotations注解详解
    Spring Data JPA
    Spring Data JPA初使用
    Spring注解Annotion详解
    JPA概要
    The requested resource is not available错误
    Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签
    Spring——Eclipse上安装springsource-tool-suite与jar包详解
  • 原文地址:https://www.cnblogs.com/liuhuacai/p/11588243.html
Copyright © 2011-2022 走看看