Pandas

Pandas

  1. 介绍

    1. panel + data + analysis

      panel面板数据 = 计量经济学 三维数据

    2. 以Numpy为基础,值为Numpy模块在计算方面性能高的优势

      基于matplotlib,能否简便的画图

      独特的数据结构(DataFrame Panel Series)

  2. 优势

    1. 便捷的数据处理能力

    2. 读取文件方便

    3. 封装了Matplotlib,Numpy的画图和计算

  3. DataFrame

    1. 结构:既有行索引,又有列索引的二维数组

      import numpy as np
      import pandas as pd
      #创建一个符合正态分布的10个股票5天的跌涨幅数据
      stock_change = np.random.normal(0, 1, (10, 5))
      #添加行索引
      stock = ["股票{}".format(i) for  i in range(10)]
      #添加列索引
      date = pd.date_range(start="20180101",periods=5,freq="B")
      datefrmae = pd.DataFrame(stock_change,index=stock,columns=date)
      
    2. 属性:

      ​ index

      ​ shape

      ​ columns

      ​ values

      ​ T

       #直接使用
       daframe.属性
         ```
      
      
    3. 方法(显示前几行,后几行)

      1. head()
      2. tail()
    4. 索引设置

      1. 修改行列索引的设置

        #不能修改单独的某一个索引,要想修改必须全部修改
        stock_code = ["股票_" + str(i) for i in range(stock_change.shape[0])]
        stock.index = stock_code
        
      2. 重设索引

        #会在每一列再加一列索引,从0开始,添加一列
        #设置drop为Ture则会丢掉原来的索引,为False则不会,为新添加索引
        data.reset_index(drop=True/False)
        
      3. 设置新索引

        #设置新的索引,drop为True会丢掉原来的索引
        df.set_index("month",drop=True)
        #设置多个索引,以年和月份
        new_df = df.set_index(["year","month"])
        #如何设置多个索引,那么这是索引已经变成了多重索引,MultiIndex
        
  4. Series

    1. 介绍:带索引的一维数组,Series结构只有行索引

    2. 属性:index,value

             pd.Series(np.arrange(3, 9, 2), index=["a", "b", "c"])
      
  5. 索引操作

    1. 直接索引

      #先列后行
      data[“列索引”][“行索引”]
      
    2. 按名字索引

      data.loc[“行索引”]["列索引"]
      #或者
      data.loc["行索引","列索引"]
      
    3. 按数字索引

      data.iloc[1,0]
      
    4. 组合索引

      data.loc[data.index[0:4],['open','close','high','low']]
      #或者
      data.iloc[0:4, data.columns.get_indexer(['open','close','high','low'])]
      
    5. 赋值和排序

      1. 赋值

        #直接使用索引进行赋值
        data.open = 100  #修改open那一列的值为100
        data.iloc[1, 0] = 222 #修改第二行,第一列的值为222
        
      2. 排序

        1. 对内容进行排序(按列排序)
        #默认从小到大进行排列,如果加上ascending=False则会从大到小排序
        data.sort_values(by="high", ascending=False)
        
        1. 按行排序
        data.sort_index()
        
  6. 运算

    1. 算数运算

      直接用运算符号或者用函数名

    2. 逻辑运算

      <, >,|,&

    3. 逻辑运算函数

      #query(expr),expr为查询的字符串
      data.query("p_change > 2 & turnover > 15"#找出指定值的元组
      data(data["turnover"].isin([4.19,2.39]))
      
    4. 统计运算

      1. discribe()

        获取总数,平均值,最小值,最大值,分位数

      2. max()

        #按列获取最大值,默认按列
        data.max(axis = 1) #axis=1表示按行
        
      3. idmax()

        #返回最大值所在的索引
        data.idmax(axis=0)
        
      4. 累积统计函数

        data["p_change"].cumsum()
        #转化为折线图
        data["p_change"].sort_index().plot()
        
      5. 自定义运算规则

        #apply(func, axis = 0)
        #	func 自定义函数
        #   axis = 0默认是列,axis= 1为行进行运算
        data.[['open','close']].apply([lambda:x.max() - x.sin(), axis=0])
        
  7. 画图

    1. pandas.DataFrame.plot
      1. FataFrame.plot(x = 行标签, y = 列标签, kind = ‘line’)
      2. kind
        1. line 折线图
        2. bar 柱状图
        3. barth 水平柱状图
        4. hist 直方图
        5. pie 饼图
        6. scatter 散点图
  8. 读取文件

    1. 读取csv文件-read_csv()

        pd.read_csv("stock.day.csv", usecols=['列标签','列标签','列标签'])
        #如果第一行不是字段,是数字,添加参数names
        pd.read_csv("stock.day.csv", names=["列标签","列标签","列标签","列标签"],usecols=['列标签','列标签','列标签'])
       #保存open列的数据,可选参数index=False,则不会保存行索引,mode追加模式,header,追加模式省略头标签
       data[:10].to_csv("路径.csv",columns=["open"], index=False, mode="a",header=False)
      
    2. 读取hdf5文件

      hdf5可以存储三维数据

      #只有一个键的时候可以读取成功,如果有多个键读取时要指出是哪一个键
      day_open = pd.read_hdf("路径.h5",key="")
      day_open.to_hdf(".h5",key="")
      
    3. Json文件

       #pd.read_json(path)
          #orient="records"
          #lines=True
      js = pd.read_json("路径.json",orient="records",lines=True)
       #转化为Json
      js.to_json("文件名.json",orient="recoeds",lines=True)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值