pandas
1. Pandas介绍[**]
-
概念
- 是一个专门用于数据挖掘的科学计算库
- 它封装了matplotlib和numpy
- 独特数据类型(DataFrame), 让数据更有表现力
-
案例的小知识点:
-
创建DataFrame
- pd.DataFrame(数组, index, columns)
- Index;行索引
- columns: 列索引
- pd.DataFrame(数组, index, columns)
-
生成日期
- pd.date_range(start, end, periods, freq)
- start: 起始日期
- end: 结束日期
- periods: 日期序列有多少天( 与end选其1)
- freq: 默认日期是连续的, 如果指定为’B’, 跳过周六日.
# 1. 生成10只股票5天涨跌幅 stock_change = np.random.normal(0, 1, (10, 5)) # 生成行索引列表 index = ['股票{}'.format(i) for i in range(stock_change.shape[0])] # 在创建DataFrame指定列索引 columns = pd.date_range('20191010', periods=5, freq='B') stock_rise = pd.DataFrame(stock_change, index=index, columns=columns) stock_rise
- pd.date_range(start, end, periods, freq)
-
DataFrame结构
- 用于描述二维数据的结构
常见属性:
形状: shape
行索引: index
列索引: columns
数据的ndarray: values
转置: T
常见方法:
获取前5条数据: head()
获取后5条数据: tail() - DatatFrame 修改索引
- 对象.index = 行索引列表
- 注意: 只能整体修改,不能只修改一部分
- 重设索引
- 对象.reset_index(drop=False)
- 重置索引, 索引就变成了从0开始的索引了
- drop: 是否删除原索引, 默认False, 如果指定为True就删除原索引
- 设置索引
- 对象.set_index([‘列名’, …])
- 用于描述二维数据的结构
-
MultiIndex与Panel
- MultiIndex: 多维索引
- 具有多维索引DataFrame, 可以表示多维数据结构.
- Panel: 用于存储三维数据的结构, 新版Pandas已经废除这个类了.
- 创建: pd.Panel(data, items, major_axis, minor_axis)
- data: 数据
- items: 第一个维度的索引
- major_axis: 第二维度索引
- minor_axis: 第三个维度索引
- 使用
- 索引与切片
- 对象[:,:,:]
- 创建: pd.Panel(data, items, major_axis, minor_axis)
- 注意: 在最新的pandas上这个Panel这个类已经不可用了.
- MultiIndex: 多维索引
-
Series:
- 作用: 用于存储一维数据的结构
- 创建series
- 直接创建, 自动生成从0开始索引
- pd.Series(数组/list)
- 创建指定索引
- pd.Series(数组/list, index=列表)
- 使用字典创建
- pd.Series({‘键’:‘值’, …})
- 说明: 键就是索引, 值就是数据
- 直接创建, 自动生成从0开始索引
-
常用属性
- 索引: index
- 值: values
-
2. 基本数据操作[****]
-
索引操作
- 案例引入小知识点:
- 读取csv
- pd.read_csv(‘路径’)
- 删除特征值(列)
- 对象.drop(删除索引列表, axis=0)
- axis=0, 就按行删除, 默认
- 读取csv
- axis=1, 按列删除.
- 直接使用行列索引, 先列后行
- 对象[‘列名’[‘行索引名称’]
- 先行后列, 名称索引
- 对象.loc[行索引名称, 列索引名称]
- 对象.loc[ :, :]
- 案例引入小知识点:
-
先行后列, 数值索引
- 对象.iloc[行索引名称, 列索引名称]
- 对象.iloc[ :, :]
- 先行后列, 数值和名称索引混合使用
- 对象.ix[行索引名称, 列索引名称]
- 对象.ix[ :, :]
-
赋值操作
- 对象[‘列名’] = 值/列表
- 对象.列名 = 值/列表
- 两种方式的区别是什么
- 对象[‘列名’] 也可修改列, 也可以添加新列
- 对象.列名 只能修改列, 不能添加新列
-
排序:
- DataFrame排序
- 按照值进行排序
- 对象.sort_values(by=[排序的列名,…], ascending=True)
- ascending=True 升序, 默认
- ascending=False 降序
- 对象.sort_values(by=[排序的列名,…], ascending=True)
- 按照索引进行排序
- 对象.sort_index(ascending=True)
- 按照值进行排序
- series:
- 值排序
- 对象.sort_values(ascending=True)
- 索引排序
- 对象.sort_index(ascending=True)
- 值排序
- DataFrame排序