zoukankan      html  css  js  c++  java
  • Pandas结构

    DataFrame结构

    DataFrame对象既有行索引,又有列索引

    行索引,表明不同行,横向索引,叫index,0轴,axis=0
    列索引,表名不同列,纵向索引,叫columns,1轴,axis=1


    DatatFrame的属性

    • shape

    • df.shape—形状

    • df.index--行索引

    • df.columns--列索引

    • df.values—值—ndarray

    • df.T-转置—注意:转置后行索引-列索引互换

    • df.head(n)—看头部的n(默认5)行

    • df.tail(n)—看尾部的n(同上)行


    DatatFrame索引的设置

    • 修改索引

      • df.index=新索引
      • 注意:只能整体修改--Index类型是一个不可变(immutable)对象
    • 重设索引

      • df.reset_index(drop=Fasle)
      • 注意:df中的索引本身也是数据的一部分
      • drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
    • 列设为索引

      • df.set_index(keys)
      • keys:列索引名成或者列索引名称的列表---可以设置多列(类似于数据库表中的组合主键)
      • drop : boolean, default True.当做新的索引,删除原来的列

    MultiIndex
    多级或分层索引对象。

    • index属性
      • names:levels的名称
      • levels:每个level的元组值
    df.index.names
    FrozenList(['year', 'month'])
    
    df.index.levels
    FrozenList([[1, 2], [1, 4, 7, 10]])
    

    Panel

    注:Pandas从版本0.20.0开始弃用:推荐的用于表示3D数据的方法是通过DataFrame上的MultiIndex方法

    • class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None, copy=False, dtype=None)
      • 存储3维数组的Panel结构

    Series结构

    • 只有行索引--没有列索引
    # series
    type(data['2017-01-02'])
    pandas.core.series.Series
    
    # 这一步相当于是series去获取行索引的值
    data['2017-01-02']['股票_0']
    -0.18753158283513574
    

    创建series

    • 直接给值--同时可以指定行索引
    # 指定内容,默认索引
    pd.Series(np.arange(10))
    
    # 指定索引
    pd.Series([6.7,5.6,3,10,2], index=[1,2,3,4,5])
    
    • 通过字典
    pd.Series({'red':100, ''blue':200, 'green': 500, 'yellow':1000})
    
    • series获取属性和值--没有columns属性
      1. index
      2. values

    基本数据操作——索引

    • 直接使用行列索引(先列后行)—series式访问
      data['open']['2018-02-23']先拿到seriess,再通过行索引拿到值
    # 直接使用行列索引名字的方式(先列后行)
    data['open']['2018-02-27']
    23.53
    
    # 不支持的操作
    # 错误
    data['2018-02-27']['open']
    # 错误
    data[:1, :2]
    

    • 结合loc或者iloc使用索引—数组式访问
      • 跟numpy类似 一定是方括号
      • df.loc—只能给索引名
      • df.iloc--只认识下标
    # 使用loc:只能指定行列索引的名字
    data.loc['2018-02-27':'2018-02-22', 'open']
    
    2018-02-27    23.53
    2018-02-26    22.80
    2018-02-23    22.88
    Name: open, dtype: float64
    
    # 使用iloc可以通过索引的下标去获取
    # 获取前100天数据的'open'列的结果
    data.iloc[0:100, 0:2].head()
    
                open    high    close    low
    2018-02-27    23.53    25.88    24.16    23.53
    2018-02-26    22.80    23.78    23.53    22.80
    2018-02-23    22.88    23.37    22.82    22.71
    
    • 使用ix组合索引
      • 下标和索引名都认识---效率问题
      • 推荐使用loc和iloc来获取的方式
    # 通过df.index[0:4] 拿到下标对应的索引名
    # 通过df.columns.get_indexer([索引名]) 拿到索引名对应的下标
    
    data.loc[data.index[0:4],['open',  'close', 'high', 'low']]
    data.iloc[0:4, data.columns.get_indexer(['open', 'close', 'high', 'low'])]
    
    • 赋值
      • 直接访问到谁直接可以复制
    # 直接修改原来的值
    data['close'] = 1
    # 或者
    data.close = 1
    

    基本数据操作——排序

    • 索引排序—df.sort_index(ascending=)
    # 对索引进行排序
    data.sort_index()
    
    • 使用df.sort_values(by=, ascending=)
      • 单个键或者多个键进行排序,默认升序
      • ascending=False:降序
      • ascending=True:升序
    # 按照多个键进行排序
    data = data.sort_values(by=['open', 'high'])
    

    series的排序--没有by参数--因为只有一列

    • 使用series.sort_values(ascending=True)进行排序
    data['p_change'].sort_values(ascending=True).head()
    
    • 使用series.sort_index()进行排序
    # 对索引进行排序
    data['p_change'].sort_index().head()
    
  • 相关阅读:
    1300 · 巴什博弈
    1 · A + B 问题
    37 · 反转一个3位整数
    145 · 大小写转换
    Spring-Boot整合freemarker引入静态资源css、js等
    Monkey API学习与脚本编写小记
    Mac终端快速启动uiautomatorviewer
    Mac解决使用uiautomatorviewer会报错:./uiautomatorviewer 03:56:07 E/Screenshot: Unsupported protocol: 2
    charles抓包https乱码问题解决-转载
    mac解决adb devices命令找不到真机设备
  • 原文地址:https://www.cnblogs.com/oklizz/p/11488225.html
Copyright © 2011-2022 走看看