1 Pandas介绍
1.1 Pandas介绍
2008年WesMcKinney开发出的库
专门用于数据挖掘的开源python库
以Numpy为基础,借力Numpy模块在计算方面性能高的优势
基于matplotlib,能够简便的画图
独特的数据结构
1.2 为什么使用Pandas
Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?
- 便捷的数据处理能力
- 读取文件方便
- 封装了Matplotlib、Numpy的画图和计算
1.3 Pandas的数据结构
Pandas的数据结构分为两种,一种是DataFrame,类似于表格结构,既有行索引,又有列索引;还有一种是Series,类似于列表和字典的结合,索引可以更改,默认情况下是数字。series结构只有行索引。
2 DataFrame
2.1 DataFrame的结构
DataFrame对象既有行索引,又有列索引
- 行索引,表明不同行,横向索引,叫index
- 列索引,表名不同列,纵向索引,叫columns
2.2 DatatFrame的属性
常用属性:
- shape:获取DataFrame的行列数
data.shape
# 结果
(10, 5)
- index:DataFrame的行索引列表
data.index
Index(['股票0', '股票1', '股票2', '股票3', '股票4', '股票5', '股票6', '股票7', '股票8', '股票9'], dtype='object')
- columns:DataFrame的列索引列表
data.columns
DatetimeIndex(['2017-01-02', '2017-01-03', '2017-01-04', '2017-01-05',
'2017-01-06'],
dtype='datetime64[ns]', freq='B')
- values:直接获取其中array的值
data.values
array([[-0.06544031, -1.30931491, -1.45451514, 0.57973008, 1.48602405],
[-1.73216741, -0.83413717, 0.45861517, -0.80391793, -0.46878575],
[ 0.21805567, 0.19901371, 0.7134683 , 0.5484263 , 0.38623412],
[-0.42207879, -0.33702398, 0.42328531, -1.23079202, 1.32843773],
[-1.72530711, 0.07591832, -1.91708358, -0.16535818, 1.07645091],
[-0.81576845, -0.28675278, 1.20441981, 0.73365951, -0.06214496],
[-0.98820861, -1.01815231, -0.95417342, -0.81538991, 0.50268175],
[-0.10034128, 0.61196204, -0.06850331, 0.74738433, 0.143011 ],
[ 1.00026175, 0.34241958, -2.2529711 , 0.93921064, 1.14080312],
[ 2.52064693, 1.55384756, 1.72252984, 0.61270132, 0.60888092]])
- T:转置
data.T
返回结果:
2.3 DataFrame的创建与索引创建
# 创建一个符合正态分布的10个股票5天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))
array([[-0.06544031, -1.30931491, -1.45451514, 0.57973008, 1.48602405],
[-1.73216741, -0.83413717, 0.45861517, -0.80391793, -0.46878575],
[ 0.21805567, 0.19901371, 0.7134683 , 0.5484263 , 0.38623412],
[-0.42207879, -0.33702398, 0.42328531, -1.23079202, 1.32843773],
[-1.72530711, 0.07591832, -1.91708358, -0.16535818, 1.07645091],
[-0.81576845, -0.28675278, 1.20441981, 0.73365951, -0.06214496],
[-0.98820861, -1.01815231, -0.95417342, -0.81538991, 0.50268175],
[-0.10034128, 0.61196204, -0.06850331, 0.74738433, 0.143011 ],
[ 1.00026175, 0.34241958, -2.2529711 , 0.93921064, 1.14080312],
[ 2.52064693, 1.55384756, 1.72252984, 0.61270132, 0.60888092]])
根据数组创建DataFrame
# 使用Pandas中的数据结构
stock_change = pd.DataFrame(stock_change)
增加行索引
# 构造行索引序列
stock_code = ['股票' + str(i) for i in range(stock_change.shape[0])]
# 添加行索引
data = pd.DataFrame(stock_change, index=stock_code)
增加列索引
股票的日期是一个时间的序列,我们要实现从前往后的时间还要考虑每月的总天数等,不方便。使用pd.date_range():用于生成一组连续的时间序列(暂时了解)
date_range(start=None,end=None, periods=None, freq=’B’)
- start:开始时间
- end:结束时间
- periods:时间天数
- freq:递进单位,默认1天,’B’默认略过周末