• Pandas的基本用法


    DataFrame的属性和用法:

      创建:

      pd.DataFrame(ndarray)

      也可以使用字典的方式来创建DataFrame

      添加行列索引:

      pd.DataFrame(ndarray,index,columns)

      index输入为列表作为行索引的值

      属性:

      shape,index,columns,values,T

      方法:

      返回前N行(默认为5)

      head(N)

      返回后N行(默认为5)

      tail(N)

    DataFrame索引的设置:

      1)修改行列索引值:

      行列索引值不能单独修改,只能进行整行或者整列的修改。

      2)重设索引:

      reset_index(drop=False)

      设置新的下标索引

      drop:默认为False,不删除原来的所以,如果为True,删除原来的索引

      3)设置新索引:

      set_index(keys,drop=True)  

      keys:可以为值也可以为列表,为列表时会产生Multindex

      查看索引的方法:DataFrame.index

      可以查看索引的名字和值:DataFrame.index.names

                  DataFrame.index.levels

    Panel:DataFrame的容器(弃用)

      items          -axis 0,每个项目对应于内部包含的数据帧(DataFrame)

      major_axis -axis 1,它是每个数据帧(DataFrame)的索引(行)

      minor_axis -axis 2,它是每个数据帧(DataFrame)的列

    Series:带索引的一维数组

      属性:

      index,values

      创建:

      pd.Series(ndarray) 

      指定内容,默认索引

      pd.Series(ndarray,index)

      指定内容,指定索引

      pd.Series({"red":100,"blue":200,"green":500,"yellow":1000})

      通过字典数据创建

    基本数据操作:

      ndarray.drop(list,axis)

      list:为指定需要删除的索引值

      axis:0为行,1位列

      索引操作:

      ①直接索引

      先列后行,先写列索引后写行索引

      ②按名字索引

      ndarray.loc["2018-02-06"]["open"]

      ndarray.loc["2018-02-06","open"]

      ③按数字索引

      ndarray.iloc[1,0]

      ④组合索引

       ndarray.ix[0:4,["open","close","high",""low]]

      返回值对应的索引:

      ndarray.columns.get_indexer(["open","close","high","low"])

      赋值操作:

      通过上面的索引操作直接对索引的位置进行赋值。

      排序操作:

      ①按照内容进行排序:

      DataFrame:

      df.sort_values(key,ascending=True)

      key:单个键或者多个键进行排序

      ascending=False:降序

      ascending=True:升序

      Series:

      sr.sort_values(ascending=False)

      ②按照索引进行排序:

      DataFrame:

      df.sort_index()

      按照索引进行从小到大的排序

      Series:

      sr.sort_index()

      按照索引进行从小到大的排序

    DataFrame运算:

      1)算数运算:

      ①直接使用符号作用于每一行

      ②使用ndarray.add()和ndarray.sub()方法进行加减操作

          可以直接对两行进行操作

      2)逻辑运算:

      ①可以使用逻辑运算符直接作用于每一行

      ②逻辑运算函数:

      query(expr)

      expr:查询字符串

      isin(values)  

      values:判断值是否存在

      3)统计运算:

      DataFrame.describe()

      返回几种常用的属性

      sum,mean,median,min,max,mode,abs,prod,std,var,idxmax,idxmin

      可以直接使用DataFrame.的方式获取对应的属性

      4)累计统计运算:

      cumsum  计算前1,2,3,.....n个数的和

      cummax  计算前1,2,3,.....n个数的最大值

      cummin  计算前1,2,3,.....n个数的最小值

      cumprod  计算前1,2,3,.....n个数的积

      5)自定义运算:

      apply(func,axis=0)

      func:自定义函数,使用lambda匿名函数

      axis=0:默认为列,axis=1:行进行运算

    Pandas画图:

      DataFrame.plot(x=None,y=None,kind="line",stacked=False)

      x:特征值,y:标签值

      kind:绘图类型

      line,bar,barh,hist,pie,scatter

      stacked:是否将图像进行堆叠

    Pandas文件操作:

      1)scv文件操作:

      ①读取csv文件:

      pandas.read_csv(path,sep=",",delimiter=None)

      path:文件路径

      usecols:指定需要的字段,可以为单个也可以为列表

      names:可以传入列表,作为读取文件的字段

      ②存储csv文件:

      DataFrame.to_csv(path,sep=",",columns=None,header=True,index=True,index_label=None,mode="w",encoding=None)

      path:文件路径

      columns:保存的列的索引

      index:是否保存行索引

      header:是否保存列索引

      2)hdf5文件操作:

      ①读取hdf5文件:

      hdf5文件相当于3维文件,每一个key对应的是一个DataFrame

      pandas.read_hdf(path,key=None,**kwargs)

      path:文件路径

      key:读取的键

      mode:打开文件的模式

      ②存储hdf5文件:

      DataFrame.to_hdf(path,key,**kwargs)

      path:文件路径

      key:对应的key值

      key值不同,可以多次存储hdf5文件

      3)JSON文件操作:

      ①读取JSON文件:

      pandas.read_json(path,orient,type="frame",lines=False)

      path:文件路径

      orient:一般使用“records”,符合一般的格式

      lines:是否把一行作为一个样本

      ②存储JSON文件:

      DataFrame.to_json(path,orient,lines)

      path:文件路径

      orient:一般使用“records”,符合一般的格式

      lines:是否把一行作为一个样本

    缺失值的处理:

      1)如何处理nan

      判断是否存在缺失值:

      pd.isnull(DataFrame)

      pd.notnull(DataFrame)

      ①删除存在缺失值的样本:

      dropna(axis="rows",inpalce=False)

      axis:默认按行修改数据

      inplace:是否替换数据,为True时,在原始数据上进行修改,为False时,返回另外的数据值,不改变原数据

      ②替换缺失值:

      fillna(value,inplace=True)

      value:替换成的值

      inplace:是否替换数据,为True时,在原始数据上进行修改,为False时,返回另外的数据值,不改变原数据

      缺失值不为nan时,需要先将缺失值转换为nan,再进行处理。

      DataFrame.replace(to_replace=,value=)

      to_replace:替换之前的值

      value:替换之后的值

    数据离散化:

      1)对数据进行分组:

      ①自动分组:pd.qcut(data,bins)

      data:分组的数据

      bins:要分的组数

           返回series值

      ②自定义分组:pd.cut(data,bins)

      data:分组的数据

      bins:要分的组按照列表的方式进行输入

      返回series值

      2)将分好的组的结果转换为哑变量(one-hot编码)

      pd.get_dummies(series,prefix)

      series:输入分组好的series值,prefix为分组的名字

    合并处理:

      1)按方向进行拼接

      pd.concat([data1,data2],axis=1)

      按照行或者列进行合并,axis=0为行索引,axis=1为行索引

      2)按索引进行拼接

      pd.merge(left,right,how="inner",on=[索引])

      inner:相同的保留

      left:左边的保留

      right:右边的保留

      outer:全部都保留

    交叉表和透视表:

      1)交叉表(用于寻找两列之间的关系):

      pd.crosstab(value1,value2)

      传入值为两列,返回两列的对应关系

      pandas日期类型(转换为DatetimeIndex):

      pd.to_datetime

      DatetimeIndex数据的属性:

      year,month,weekday

      2)透视表:

      DataFrame.pivot_table([],index=[])

      前面输入需要查看的数据列,后面提供索引

    分组与聚合:

      DataFrame.groupby(by,as_index=False)

      by:分组的列数据,可以为多个

      Series.groupby(DataFrame[])

      传入对应的列,按照该列进行分组与聚合

      

      

      

      

      

  • 相关阅读:
    bzoj 4017: 小Q的无敌异或
    [TJOI2014] Alice and Bob
    [TJOI2014] 上升子序列
    bzoj 3261: 最大异或和
    bzoj3087: Coci2009 misolovke
    bzoj3521: [Poi2014]Salad Bar
    bzoj4032: [HEOI2015]最短不公共子串
    bzoj1027: [JSOI2007]合金
    bzoj4637: 期望
    bzoj3919: [Baltic2014]portals
  • 原文地址:https://www.cnblogs.com/zx931880423/p/11794838.html
Copyright © 2020-2023  润新知