Pandas介绍:数据处理工具。


为什么使用Pandas:
Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?
- 边界的数据处理能力
- 读取文件方便
- 封装了Matplotlib、Numpy的画图和计算
DataFrame类型:
numpy中创建股票涨跌幅数据形式:

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

具体演示:
数据准备:

将ndarray类型转换为DataFrame类型:


DataFrame既有行索引又有列索引的二维数组。
- 给股票涨跌幅数据增加行列索引,显示效果更佳:
- 增加行索引
构造行索引序列:

- 或是:

- 添加行索引:

- 增加列索引:
- 股票的日期是一个时间的序列,我们要实现从前往后的时间还要考虑每月的总天数等,不方便。使用pd.data_range():用于生成一组连续的时间序列(暂时了解)

- 股票的日期是一个时间的序列,我们要实现从前往后的时间还要考虑每月的总天数等,不方便。使用pd.data_range():用于生成一组连续的时间序列(暂时了解)
- 生成一个时间的序列,略过周末非交易日:

- 或是:

- 日期的形式也可以:

- 添加列索引:index代表行索引,columns代表列索引。

总结:
1、DataFrame结构
- DataFrame对象既有行索引,又有列索引
- 行索引,表明不同行,横向索引,叫index
- 列索引,表明不同列,纵向索引,叫columns

DataFrame常用属性:

shape形状属性:

index取行索引列表属性:

columns取列索引列表属性:

values直接获取其中ndarray的值:

T转置属性:

DataFrame常用方法:
head(5):显示前5行内容。
- 注意:如果不补充参数,默认是前5行,填入参数N则显示前N行。

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

DataFrame索引的设置:
- 修改行列索引值:



修改行索引:



- 注意:不能单个设置,只能整体修改。


修改列索引:



- 注意:不能单个设置,只能整体修改。


reset_index(drop=True/False)重设索引:
- reset_index(drop=False)
- 设置新的下标索引
- drop:默认为False,不删除原来索引,如果为True,删除原来的索引值。



- 默认是drop=False。


注意:这个是不会修改原数据的。

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类型。

将月份列值设置成新的索引:

- 默认是drop=True:



将多个列的值设置成索引:




- 注:通过刚才的设置,这样DataFrame就变成了一个具有Multilndex的DataFrame
一个MultiIndex的DataFrame是可以用来存储三维数据的。
Multilndex:
- df = pd.DataFrame({“month”: [1, 4, 7, 10], “year”: [2012, 2014, 2013, 2014], “sale”: [55, 40, 84, 31]})



- 多级或分层索引对象。
- index属性
- names:levels的名称
- levels:每个level的元组值

- index属性
(了解,新版本中已废掉了)Panel:

具体使用的api手册:





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




Series:
思考:如果获取DataFrame中某个股票的不同时间数据?这样的结构是什么呢?
准备数据
- 创建一个符合正态分布的10个股票5天的涨跌幅数据
- stock_change = np.random.normal(0, 1, (10, 5))

- 将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)

- 取出第2只股票的所有时间列数据:

- 我们发现是Series类型,那什么是Series类型呢?
- 什么是Series结构呢?我们直接看下面的图:

- 总结:series结构只有行索引。
- 将前面的涨跌幅数据进行转置,然后获取“股票_0”的所有数据:




下面这一步相当于是series去获取行索引的值:

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

创建Series:
- 指定内容,默认索引:


- 指定内容,指定索引:


通过字典数据创建:

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





- 总结:DataFrame类型中有Series类型,Series类型中有ndarray类型,也可以DataFrame是Series的容器,Series是ndarray的容器。
总结:pandas的三种数据结构。
2、Panel
- DataFrame的容器
3、Series
- 带索引的一维数组
- 属性
- index
- values
总结:
- DataFrame是Series的容器
- Panel是DataFrame的容器

17万+

被折叠的 条评论
为什么被折叠?



