美文网首页我爱编程
Panda库简单总结

Panda库简单总结

作者: 凉风起天末_ | 来源:发表于2018-05-19 23:09 被阅读0次

    panda库是基于numpy的第3方库,因此需要
    import pandas as pd
    import numpy as np

    两大基本数据类型

    1.SeriesDataFrame

    Series:一维数据结构,类似于数组,但强于数组

    • 声明series对象
    s = pd.Series([12, 4, 7, 9])      #普通声明
    s1 = pd.Series([12, 4, 7, 9],indes['a','b','c','d'])      #指定index
    s.values      #查看元素
    s1.index      #查看索引
    
    • 选择元素和赋值
    s[2]            #默认index为2
    s1['b']         #index为b
    s[0:2]          #索引从0到2
    s[['b','c']]    #索引从b到c
    
    s[1] = 0    #改变索引为1的值为0
    s['b'] = 1    #改变索引为1的值为0
    
    • 以numpy数组或series对象重定义series对象
    arr = np.array([1,2,3,4])
    s = pd.Series(arr)      #以numpy数组生成
    s1 = pd.Series(s)      #series对象生成
    
    • 筛选元素
      s[s>8]
    • 运算和函数
    s/2
    np.log(s)    #需要调用np
    
    • Series元素组成元素
    serd = pd.Series([1,0,2,1,2,3],index=['w','w','b','g','g','y'])
    serd.unique()    #去重
    serd.value_count()    #显示重复次数和去重
    serd.isin([0,3])    #判断列表元素是否包含在对象中(dataframe对象也适用)
    
    • 非数值NaN (not a number)
    s = pd.Series([5,-3,np.nan,14])    #包含非数字值的series对象
    s.isnull()    #判断是否有非数值
    s.notnull()
    
    • Series用作字典
    dict = {'red':200,'blue':100,'yellow':500,'orange':1000}
    my_series=pd.Series(dict)
    color=['red','yellow','orange','blue','green']
    my_series=pd.Series(dict,index=color)    #列表形式指定index
    
    • Series对象运算
    dict2={'red':40,'yellow':1000,'black':200}
    my_series2 = pd.Series(dict2)
    my_series1+my_series2      #对齐一致的相加
    

    DateFrame对象:表格型数据对象结构

    • 定义DataFrame对象
    data = {'color':['blue','green','yellow','red','white'],
                'object':['ball','pen','pencil','paper','mug'],
                'price':[1.2,1.0,0.6,0.9,1.7]}
    frame = pd.DataFrame(data)
    
    • 指定index和columns选项
    frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['object','price'])
    
    • 选取元素
    frame['price']
    frame.price
    frame.ix[2]        # ix属性选取行索引
    frame.ix[[2,4]]      # 选取多行
    frame[0:1]        # 通过类似切片的方法选取行
    frame['object'][3]    # 选取单个元素
    
    • 赋值
      1.给行和列标签设置二级标签
    frame.index.name='id';frame.columns.name='item'
    

    2.添加新的列

    frame['new']=12
    frame['new']=[3.0,1.3,2.2,0.8,1.1]      # 更新该列
    
    1. 将一个series对象赋给dateframe的提格列
    ser = pd.Series(np.arange(5))
    frame['new']=ser
    

    4.给单个元素赋值

    frame['price'][2]=3.3
    
    • 筛选
    frame[frame < 12]
    
    • 转置
    frame.T
    

    index对象

    index对象声明后是不可改变,除了某些情况

    • index对象的方法
    ser.idxmax()    # 返回最大值
    ser.idxmin()    # 返回最小值
    
    • 含重复标签的index
    serd = pd.Series(range(6),index=['w','w','b','g','g','y'])
    serd['w']
    serd.index.is_unique    # is_unique属性,查看是否存在重复的索引值
    
    • 更换索引
    serd = pd.Series(range(6),index=['w','w','b','g','g','y'])
    serd.reinde(['g','w','g','w','y','b','r'])
    
    • 索引的自动编制功能
    ser2 = pd.Series([1,2,6,3],index=[0,3,5,6])
    ser2.reindex(range(6),method='ffill')     # 更新索引,并自动填充少的数,mothod指缺少处取前一个数
    ser2.reindex(range(6),method='bfill')      # 取后一个值
    
    • 删除
    ser2 = pd.Series([1,2,6,3],index=[0,3,5,6])
    ser2.drop(['3','6'])    # 删除多行
    frame=pd.DataFrame(np.arange(16).reshape((4,4)),
                index=['red','blue','white','yelllow'],
                columns=['ball','pen','pencil','paper'])
    frame.dorp(['blue','yellow'])    # 删除行
    frame.drop(['pen','pencil'],axis=1)    #删除列4
    

    函数操作

    • 通用函数
      sqrt() #平方根
    • 按行列操作的函数
      lambda函数
    f = lambda x: x.max() - x.min()    # 自定义函数
    # 等价于
    def f(x):
        return x.max() - x.min()
    
    • 应用apply()函数在dataframe中调用
    frame.apply(f)        #处理行
    frame.apply(f,axis=1)        # 处理列
    
    • 统计函数
    frame.sum()
    frame.mean()
    frame.describe()
    
    • 排序和排次位
    ser.sort_index()
    ser.sort_index(ascending=Flase)      # 降序排列
    frame.sort_index()  
    frame.sort_index(axis=1)
    ser.order()                  # 对series对象进行排序
    frame.sort_index(by='pen')
    frame.sort_index(by=['pen','paper'])
    ser.rank()        # 位次
    ser.rank(method='first')
    ser.rank(ascending=Flase)
    

    NaN数据:缺失值
    np.nan

    • 为元素赋NaN值
    ser=pd.Series([0,1,2,np.nan,9],index=['red','blue','yellow','white','green'])
    
    • 过滤掉nan
    ser.dropna()
    ser[ser.notnull()]      # 将notnull作为选取元素的条件
    frame = pd.DataFrame([[6,np.nan,6],[np.nan,np.nan,np.nan],[2,np.nan,5]],
                                          index=['blue','green','red'],
                                           columns=['ball','mug','pen'])
    frame.dropna(how='all')      #避免删除整行或整列,指定为all/any
    
    • 为nan元素填充其他值
    frame.filllna(0)
    frame.fillna('ball':1,'mug':0,'pen':99)      #指定要填充的值
    

    相关文章

      网友评论

        本文标题:Panda库简单总结

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