美文网首页我爱编程
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