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[])

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

  

  

  

  

  

posted @ 2019-11-06 16:01  Dark~Clearlove  阅读(546)  评论(0编辑  收藏  举报