pandas快速入门

Posted --believe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas快速入门相关的知识,希望对你有一定的参考价值。

概述

概念

开源的数据挖掘库

用于数据探索

封装了matplotlib,numpy

案例知识点

pd.DataFrame(ndarray)–创建DataFrame

pd.date_range()–创建日期

参数: start–开始日期

​ end–结束日期

​ perios–时间跨度

​ freq --统计时间方式

stock_change=np.random.normal(0,1,(10,5))
stock_change
stock_code=["第股票".format(i+1) for i in range(stock_change.shape[0])]
stock_time=pd.date_range(start="20210103",periods=stock_change.shape[1])
stock_c=pd.DataFrame(stock_change,index=stock_code, columns=stock_time)
stock_c

DataFrame

对象.shape
对象.values
对象.index
对象.columns
对象.T --转置
对象.head --查看前几行
对象.tail --查看后几行

DataFrame设置索引

修改行列索引

必须整行或者整列去进行修改,直接通过属性更改

stock_i=["股票".format(i+1) for i in range(stock_change.shape[0])]
stock_c.index=stock_i
stock_c

重设索引

对象.reset_index()

stock_c.reset_index(drop=True)

基本数据操作

索引操作

  1. 直接 --先列后行

    stock_data["open"]["2018-02-27"] # 注意pandas中必须是先行后列,这种方式不可以切片
    
  2. loc --先行后列

    # 使用先行后列必须使用loc
    stock_data.loc["2018-02-27":"2018-02-14","open"]
    
  3. iloc–先行后列,索引值的下标

    stock_data.iloc[:3,:-1]
    
  4. 下标和索引混合使用

    stock_data.loc[stock_data.index[0:2],("high","low")] # 如果要数字和字符串混合用,使用loc。数字这里用属性进行切片
    
    stock_data.iloc[:3,stock_data.columns.get_indexer(["close","volume"])]
    

    赋值操作

    1. []方式或者.属性方式

      stock_data["volume"]=100
      #或者
      stock_data.volume=100
      stock_data["volume"]
      

    排序

    1. dataframe

      对象.sort_values()

      对象.sort_index()

      参数:by 接受多个值

    2. series

      对象.sort_values()

      对象.sort_index()

      stock_data.sort_values(by=["open"],ascending=False).head()
      stock_data.sort_index(ascending=False).head()
      stock_data["open"].sort_values().head()
      stock_data["open"].sort_index().head()
      

算术运算

方法add,sub…

也可以直接用符号

import pandas as pd
data=pd.read_csv("./data/test.csv")
data.head()
data["close"].add(4).head()

逻辑运算

  1. 逻辑运算符号

    data["open"]>23
    data[data["open"]>23].head()
    ## 多个判断条件
    data[(data["open"]>23)&(data["high"]>25)].head()
    
  2. 逻辑运算函数

  • dataframe.query("")

  • series.isin

    data.query("open>23.53 & high>25").head()
    data["open"].isin([23.5])
    data[data["open"].isin([23.5])].head()
    

统计函数

  1. 对象.describe()

  2. 统计函数

    • sum
    • mean
    • mode–众数
    • idxmin–最大值的索引
    • idxmax–最小值的索引
  3. 累计统计函数

    函数作用
    cumsum计算前n个数的和
    cummax计算前n个数的max
    cummin计算前n个数的min
    cumprod计算前n个数的积

自定义函数

apply(func,axis=0)

定义一个对列,最大值-最小值的函数

data[["open", "high", "close"]].apply(lambda x: x.max()-x.min())

pandas画图

DataFrame.plot()

参数:kind

  • line–折线图
  • bar
  • barh–条形图
  • hist–直方图
  • pie
  • scatter

文件读取和存储

  1. csv

    • 读取–pd.read_csv

      参数:

      usecols

      pd=pd.read_csv("./data/stock_day.csv",sep=",",usecols=["open","high"])#可以指定读取哪几行
      
    • 存储–pd.to_csv

      参数:

      columns–保存哪列

      pd.to_csv("./data/stock_day_open.csv",columns=["open"],index=True)
      
  2. hdf(推荐使用)

    读取–pd.read_hdf()

    写入–pd.to_hdf()

    ​ 参数:orient–按照什么方式进行读取或者写入

    ​ lines–是否按照行读取和写入

    注意:保存文件是*.h5(后缀名)

    好处:

    • 压缩方式,读取效率快
    • 压缩后,节省空间
    • 支持跨平台
  3. json

    读取-pd.read_json()

    写入–pd.to_json()

缺失值-处理

  1. 判断数据是否为NaN

    np.any(np.isnull(movie))–如果有一个缺失值,就返回True

    np.all(np.notnull(movie))–如果有一个缺失值返回False

  2. 处理方式

    存在缺失值nan,并且是np.nan

    • 删除存在缺失值的行–dropna(axis=‘rows’)

    • 替换缺失值–fillna(value,inplace=True)

      value:替换成的值

      inplace:True会修改原来数据

    其他符号比如?

    ​ 利用replace函数替换

    ​ 参数:to_place–替换前的值

    ​ value–替换后的值

数据离散化

  1. 什么是数据离散化

    把一些连续数据分到某个区间,最后用不同的符号或者数字表达

  2. 数据离散化api

    pd.qcut() --把数据大致分为数量相等的几类

    pd.cut()–指定分组间隔

    数量统计:

    ​ 对象.value_counts

  3. one-hot编码

    就是把数据转换成0,1统计类型

    别名:哑变量,热独编码

    api: pd.get_dummies()

数据合并

pd.concat() --参数axis=

pd.concat([left,right],join='inner',axis=1,ignore_index=0)# 内连接默认是index,好像不能调节

pd.merge()

​ left --左表

​ right --右表

​ on --指定键

​ how – 按照什么方式进行拼接

pd.merge(left,right,how="inner",on=["key1","key2"])

数据透视表

  1. 什么是交叉表,透视表

    就是探索两列数据之间的关系

  2. pd.crosstab()

    返回具体数量

  3. 对象.privot_table(数据透视表)

    data.pivot_table(index='weekday',values='p_c1',aggfunc=np.mean)  # index表示索引,values表示要查看的值,aggcunc表示聚合函数的操作
    

Api参数详解链接

分组和聚合

  1. 对象.groupby()

    参数:as_index 是否进行索引

    注意:分组后一定要聚合,下面有常用的两种方式

    col.groupby(["color"])['price1'].mean() #对颜色分组对prices1进行聚合
    
    col.groupby(["color"]).count()
    

以上是关于pandas快速入门的主要内容,如果未能解决你的问题,请参考以下文章

Pandas高级数据分析快速入门之二——基础篇

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之四——数据可视化篇

Pandas高级数据分析快速入门之一——Python开发环境篇

Pandas高级数据分析快速入门之六——机器学习预测分析篇