numpy,pandas实用知识(数据分析基础)

numpy

  • numpy的四个属性:
    ndim 维度 ;shape ;size;dtype 类型

  • ndarray的类型优先级:str>float>int(类型一致,不一致按照类型优先级统一类型)

  • numpy的routines函数
    numpy.ones() 创建全是1的矩阵
    numpy.zeros() 创建全是0的矩阵
    numpy.eye() 创建单位矩阵
    numpy.full(fill_value=,)创建全是fill_value的矩阵

    numpy.linspace(start,end,num=)在一个区间范围内分num份
    numpy.arange(start,end,step)在一区区间内,按step分多少份

    numpy.random.random()
    numpy.random.randint()
    numpy.random.randn()标准正态分布
    numpy.random.normal()正态分布

  • ndarray变形(reshape)

  • numpy级联:
    numpy.concatenate((n1,n2),axis=)
    numpy.hstack()
    numpy.vstack()

  • 切分(split)
    numpy.split(n,num,axis=)#num是切成几份,必须能整除才行,num也可以是一个元组,按照里面的元组索引进行切分
    numpy.hsplit(n,num)
    numpy.vsplit(n,num)

  • 副本(深拷贝):n2=n1.copy()

  • 聚合操作:
    numpy.sum()求和
    numpy.mean()平均值
    numpy.std()标准差
    numpy.var()方差
    numpy.min()最小值
    numpy.max()最大值
    numpy.median()中值
    numpy.sqrt()开方
    numpy.power()幂
    numpy.all()
    numpy.any()
    numpy.argmin()有arg返回的是索引
    numpy.argmax()
    numpy.argsort()

  • numpy中的数学运算(加减符合广播机制)
    加+
    减-
    积dot(np.dot(n1,n2))

pandas(series,DataFrame)

Series

  • Series的属性:
    shape,size,index,values

  • Series的创建:
    用dcit创建:
    s=Series(data={‘s’:1,‘f’:4})
    用ndarray创建:(当Series改变时,ndarray中的值也会改变)
    s=Series(data=np.array([2,2,4]))

  • Series高级用法
    去除两个series的nan:n1.add(n2,fill_name=0)
    转为Datatime:pd.to_datatime(Series)
    在DataFrame中,使按某一列排序:d.iloc[d[‘yingyu’].argsort()]
    去重:Series.unique()

DataFrame

  • DataFrame的每一列就是一个Series

  • DataFrame的创建:
    DataFrame(data=,index=,columns=)

  • 显式索引(.loc)

  • 隐式索引(loc)

  • 处理丢失的数据(None,np.nan)都是NaN
    判断是否为丢失数据:data.isnull()是就返回True;data.notnull()不是NaN就返回True
    过滤丢失的数据:data.dropna()默认删除一行
    填充丢失数据:data.fillna(value=0)(或者写method的属性有:bfill,backfill,pad,ffill)

  • 创建多层索引(隐式构造,显式构造)
    一般使用显式构造(pd.MultiIndex):arrays,tuples,product
    product:
    index=pd.MultiIndex.from_product([‘一般’,‘厉害’],[‘ddd’,‘dda’,‘eee’])

  • 多层索引查找
    显式查找:data.loc[(行索引,行索引),(列索引,列索引)]

  • 堆(stack)
    stack 将列索引改为行索引
    unstack 将行索引转为列索引

  • 拼接操作
    级联:(pd.concat(()),data.append())
    合并:(pd.merge())

  • DataFrame的高级用法
    data.drop(columns=‘xxx’,inplace=True) 删除一列数据

  • 建立新索引
    data.set_index(‘在头部索引中的字段’,inplace=True)

  • 排序:
    data.sort_values(by=‘columns’) 根据列的数据进行排序

  • 条件查询:
    cond = data[‘kk’]==‘Pk’ 条件成立,返回Ture
    data.loc[cond,‘columns’]=‘psdsd’ 对返回True的数据进行修改

处理数据

  • duplicate(去除重复的数据)
    data.duplicated() 不是第一次出现的返回False
    删除:
    data.drop_duplicates(keep=‘last’,subset[‘a’,‘d’])
    参数说明,keep保留重复的最后一条,对哪些字段进行去重
    取反:~

  • 映射:replace(maping)替换,map(maping)修改,新增,rename(maping)修改头部索引
    映射首先要定义一个字典mapping={1:值}

  • 异常值检测:describe
    步骤:1.定义异常值的标准;2.把这个标准写成写成条件;3.根据条件取反(~)

  • 取样(take([]))(取到的是一行数据)
    随机取样:
    无法回抽样:data.take(np.random.randint(0,4,4))
    又返回抽样:data.take(np.random.permutation(list(range(10))))

数据聚合

分组(groupby);聚合(sum),合并(merge)
  • d.groupby(level=0).groups 分组(参数用level,或者by只能存在一个)
  • 分组聚合:
    data.groupby(by=‘索引’)[[‘价格’,‘体重’]].sum() 根据头索引分组对每行数据进行分组
  • 合并(merge)
    pd.merge(df1,df2,left_on=,right_on=,right_index=,duffixes=[’’,’’])
    还有参数:ignore_index=,how=’’
  • 其他函数:
    data.add_predix(‘ma_’)(添加前缀)
    data.add_sufdix(’_ma’)(添加后缀)
  • 数据加载
  • 后面还有很多,看下面的xmind也很详细(因为写了太多时间了)
    numpy,pandas实用知识(数据分析基础)