Pandas

Pandas介绍:数据处理工具。

Pandas
Pandas

为什么使用Pandas:

Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?

  • 边界的数据处理能力
  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算

DataFrame类型:

numpy中创建股票涨跌幅数据形式:
Pandas

  • 但是这样的数据形式很难看到存储的是什么样的数据,并且也很难获取相应的数据,不如需要获取某个指定股票的数据,就很难去获取!!
问题:如何让数据更有意义的显示。

Pandas

具体演示:

数据准备:

Pandas

将ndarray类型转换为DataFrame类型:

Pandas
Pandas

DataFrame既有行索引又有列索引的二维数组。

  • 给股票涨跌幅数据增加行列索引,显示效果更佳:
  • 增加行索引
    构造行索引序列:
    Pandas
  • 或是:
    Pandas
  • 添加行索引:
    Pandas
  • 增加列索引:
    • 股票的日期是一个时间的序列,我们要实现从前往后的时间还要考虑每月的总天数等,不方便。使用pd.data_range():用于生成一组连续的时间序列(暂时了解)
      Pandas
  • 生成一个时间的序列,略过周末非交易日:
    Pandas
  • 或是:
    Pandas
  • 日期的形式也可以:
    Pandas
  • 添加列索引:index代表行索引,columns代表列索引。
    Pandas
总结:

1、DataFrame结构

  • DataFrame对象既有行索引,又有列索引
    • 行索引,表明不同行,横向索引,叫index
    • 列索引,表明不同列,纵向索引,叫columns
      Pandas

DataFrame常用属性:

Pandas

shape形状属性:

Pandas

index取行索引列表属性:

Pandas

columns取列索引列表属性:

Pandas

values直接获取其中ndarray的值:

Pandas

T转置属性:

Pandas

DataFrame常用方法:

head(5):显示前5行内容。
  • 注意:如果不补充参数,默认是前5行,填入参数N则显示前N行。
    Pandas
tail(5):显示后5行内容。
  • 注意:如果不补充参数,默认是后5行,填入参数N则显示后N行。
    Pandas

DataFrame索引的设置:

  • 修改行列索引值:
    Pandas
    Pandas
    Pandas
修改行索引:

Pandas
Pandas
Pandas

  • 注意:不能单个设置,只能整体修改。
    Pandas
    Pandas
修改列索引:

Pandas
Pandas
Pandas

  • 注意:不能单个设置,只能整体修改。
    Pandas
    Pandas
reset_index(drop=True/False)重设索引:
  • reset_index(drop=False)
    • 设置新的下标索引
    • drop:默认为False,不删除原来索引,如果为True,删除原来的索引值。
      Pandas
      Pandas
      Pandas
  • 默认是drop=False。
    Pandas
    Pandas
注意:这个是不会修改原数据的。

Pandas

set_index()以某列值设置为新的索引。
  • set_index(keys,drop=True)
    • keys:列索引名称或者列索引名称的列表
    • drop:boolean,default True.当作新的索引,删除原来的索引
准备数据:
  • df = pd.DataFrame({“month”: [1, 4, 7, 10], “year”: [2012, 2014, 2013, 2014], “sale”: [55, 40, 84, 31]})
  • 注意:以字典的形式创建了一个DataFrame类型。
    Pandas
将月份列值设置成新的索引:

Pandas

  • 默认是drop=True:
    Pandas
    Pandas
    Pandas
将多个列的值设置成索引:

Pandas
Pandas
Pandas
Pandas

  • 注:通过刚才的设置,这样DataFrame就变成了一个具有Multilndex的DataFrame

一个MultiIndex的DataFrame是可以用来存储三维数据的。

Multilndex:
  • df = pd.DataFrame({“month”: [1, 4, 7, 10], “year”: [2012, 2014, 2013, 2014], “sale”: [55, 40, 84, 31]})
    Pandas
    Pandas
    Pandas
  • 多级或分层索引对象。
    • index属性
      • names:levels的名称
      • levels:每个level的元组值
        Pandas

(了解,新版本中已废掉了)Panel:

Pandas

具体使用的api手册:

Pandas
Pandas
Pandas
Pandas
Pandas

为什么看不到它的具体数据呢???
  • 因为电脑是平面的,而Panel是三维的,现在是不能通过二维看三维数据的。通常我们把Panel看作是dataframe的容器:那我们可以索引它其中一个维度,来看到一个dataFrame。

Pandas
Pandas
Pandas
Pandas

Series:

思考:如果获取DataFrame中某个股票的不同时间数据?这样的结构是什么呢?
准备数据
  • 创建一个符合正态分布的10个股票5天的涨跌幅数据
  • stock_change = np.random.normal(0, 1, (10, 5))
    Pandas
  • 将ndarray类型的数据转换为DataFrame类型的数据:
  • date = pd.date_range(start=“20180101”, periods=5, freq=“B”)
  • stock = [“股票_” + str(i) for i in range(stock_change.shape[0])]
  • data = pd.DataFrame(stock_change, index=stock, columns=date)
    Pandas
  • 取出第2只股票的所有时间列数据:
    Pandas
  • 我们发现是Series类型,那什么是Series类型呢?
  • 什么是Series结构呢?我们直接看下面的图:
    Pandas
  • 总结:series结构只有行索引。
  • 将前面的涨跌幅数据进行转置,然后获取“股票_0”的所有数据:
    Pandas
    Pandas
    Pandas
    Pandas
下面这一步相当于是series去获取行索引的值:

Pandas

  • 也可以下面这样获取series类型的数据:
    Pandas

创建Series:

  • 指定内容,默认索引:
    Pandas
    Pandas
  • 指定内容,指定索引:
    Pandas
    Pandas
通过字典数据创建:

Pandas

获取Series数据类型的索引和值:

Pandas
Pandas
Pandas
Pandas
Pandas

  • 总结:DataFrame类型中有Series类型,Series类型中有ndarray类型,也可以DataFrame是Series的容器,Series是ndarray的容器。

总结:pandas的三种数据结构。

2、Panel

  • DataFrame的容器

3、Series

  • 带索引的一维数组
  • 属性
    • index
    • values

总结:

  • DataFrame是Series的容器
  • Panel是DataFrame的容器