一、简介
封装了Numpy和Matplotlib,具有便捷的数据处理能力,读取文件方便,专门用于数据挖掘。
二、三大数据结构
2.1 DataFrame
2.1.1 结构
既有行索引,又有列索引的二维数组
1. 生成DataFrame
pd.DataFrame(ndarrary)
1 | import numpy as np |
2. 添加行索引
pd.DataFrame(ndarrary,index= )
1 | #1.生成行索引 |
3. 添加列索引
pd.DataFrame(ndarrary,columns= )
1 | #生成列索引 |
2.1.2 属性
1. 常用属性
shape 矩阵形状
index 行索引列表
columns 列索引列表
values 显示ndarrary,不显示行列索引
T 行列转置
1 | data.shape |
2. 方法
head( ) 显示开头几行数据,默认为5,可以指定
tail( ) 显示尾部几行数据,默认为5,可以指定
1 | #显示开头三行 |
2.1.3 索引的设置
1. 修改行列索引
不能单个修改,只能全部重新生成
1 | stock_code = ["股票_"+ str(i) for i in range(10)] |
2. 重设索引
rest_index(drop=False)
- 设置新的下标索引
- drop:默认为False,不删除原来的索引,如果为True,则会删除原来的索引值
1 | data.reset_index() |
3.设置新索引
set_index(keys,drop=True)
- keys:列索引名或者列索引名列表
- drop:默认为True,当作新的索引,删除原来的列
1 | df = pd.DataFrame({ 'month' : [1,4,7,10],'year':[2012,2014,2013,2014],'sale':[55,40,84,31]}) |
2.1.4 MultiIndex和Panel
1.Multilndex
用来储存三维数组
属性:
- names:levels名称
- levels:每个level的元组值
1 | new_df.index.names |
2.Panel
和Multilndex相同,但0.20.0弃用
2.2 Series
带索引的一维数组
2.2.1 创建
1.指定内容,索引为默认
1 | pd.Series(np.arange(3,9,2)) |
2.指定索引
1 | pd.Series(np.arange(3,9,2),index=["a","b","c"]) |
3.通过字典创建
1 | pd.Series({'red':100,'bule':200,'green':500,'yellow':1000}) |
2.2.2 属性
index 行索引列表
values 显示ndarrary,不显示行索引
三、基本数据操作
3.1 索引操作
3.1.1 直接使用索引操作
1 | data.head() |
3.1.2 按行列名进行索引
ndarrary.loc
1 | data.loc["2018-02-06"]["open"] |
3.1.3 按数组位置进行索引
ndarrary.iloc
1 | data.iloc[1,0] |
3.1.4 组合索引
ndarrary.ix (已经失效)
1 | data.loc[data.index[:4],['open','close','high','low']] |
3.2 赋值操作
1 | data.open = 100 |
3.3 排序
3.3.1 对内容进行排序
1.DataFrame
data.sort_values(key=,ascending=)
- 单个键或者多个键,进行排序,默认升序
- ascending=False:降序
- ascending=True:升序
1 | #按high列数据,升序排列 |
2. Series
1 | sr.sort_values(ascending=False) |
3.3.2 对索引排序
1.DataFrame
data.sort_index( )
1 | data.sort_index() |
2.Series
sr.sort_index()
1 | sr.sort_index() |
四、DataFrame运算
4.1 算术运算
1.add( )
1 | data |
2.sub( )
1 | data.sub(10) |
4.2 逻辑运算
4.2.1 逻辑运算符
<、>、 |、 &
1 | data["p_change"] > 2 |
布尔索引
1 | #显示p_change列数值大于2的数据 |
4.2.2 逻辑运算函数
1.query( )
指令语句执行函数,直接指定列名即可
1 | data.query("p_change>2 & low>15") |
2.isin( )
筛选数值范围之内的数据
1 | #筛选turnover列数值介于4.19和2.39之间的数据 |
4.3 统计运算
4.3.1 常用统计运算符
min、 max、 mean、 median、 var、 std
describe 一次性获得所有类型
1 | data.describe() |
4.3.2 获取位置
idxmax( )、idxmin( )…
1 | data.idxmax() |
4.3.3 累计统计函数
cumsum 计算前1/2/3/.n个数的和
cummax 计算前1/2/3.n个数的最大值
cummin 计算前1/2/3/.n个数的最小值
cumprod 计算前1/2/3/.n个数的积
1 | data.p_change |
4.4 自定义运算
apply(func,axis=0)
- func:自定义函数
- axis:0默认为列,1为行
1 | data.apply(lambda x: x.max() - x.min()) |
五、画图
5.1 Dataframe.plot( )
二维数组直接用plot( ),会自动生成统计图
1 | #指定volume为x轴,turnover为y轴,类型为散点图 |
5.2 Series.plot( )
同Dataframe
六、文件读取与存储
6.1 CSV文件
1.读取
pd.read_csv(path)
- usecols= 获取想要的列
- names= 添加列索引
1 | pd.read_csv("stock_day.csv",usecols=["high","low","open","close"]) |
2.写入
DataFrame.to_csv(path)
- columns=[ ] 需要写入文件的列
- index=False 不保存行索引
- header=False 不保存列索引
1 | #保存open列的数据 |
6.2 HDF5文件
hdf5存储三维数据的文件
key1 dataframe1 二维数据
key2 dataframe2 二维数据
key相当于存进大文件的小文件的文件名,在读取时必须指定key
1.读取
pd.read_hdf(path,key=)
1 | #读取h5文件中,key值为close的数组 |
2.写入
pd.to_hdf(path,key=)
1 | #将day_close数组写入h5文件中,key指定为close |
6.3 JSON文件
1.读取
pd.read_json(path)
- orient=”records”
- lines=True 按行读取,默认为False
1 | sa = pd.read_json("Sarcasm_Headlines_Dataset.json",orient="records",lines=True) |
2.写入
pd.to_json( path)
1 | #将数据按行写入json文件中 |