pandas 常用函数及操作一览 1.1创建对象 使用pd.DataFrame()函数 # 导入需要的第三方库import pandas as pdimport numpy as np# 创建一个6行4列,以2022年1月1日为起始日的数据df = pd.DataFrame(np.random.rand
pandas 常用函数及操作一览
1.1创建对象
使用pd.DataFrame()函数
# 导入需要的第三方库 import pandas as pd import numpy as np # 创建一个6行4列,以2022年1月1日为起始日的数据 df = pd.DataFrame(np.random.rand(6, 4), index=pd.date_range('20220101', periods=6), columns=list("ABCD")) df1.2读取文件
file_path = r"C:\Users\Lu_Cool\Desktop\PythonQuant_cn\PythonANS\Data\Part2\001\history.csv" #文件路径 data = pd.read_csv(file_path)读取csv文件也可以使用pd.read_table()函数关于pd.read_xxx()函数中常见参数如下:
pd.read_table(file_path, sep=",",header=None)file_path 为文件路径,sep 为分隔符,header为None表示选取第0行数据作为列名
1.3查看对象
当数据量过大的时候我们往往只选取其中的一部分来查看
data # 直接使用对象名来访问 data.head() #查看头部的五行 data.tail() #查看末尾五行 data.columns #查看列名 data.index #查看行名 data.values # 查看数据值(以数组形式)1.4 DataFrame对象的索引与切片
# 行切片 data[1:3] # 单独提取某一列 data["CTA.Global"] # 提取某几列 data[["CTA.Global","Distressed.Securities"]] # 根据boolean值提取 data[data["Distressed.Securities"]>0] # 注意:列切片无法进行,同时对行和列进行操作也会出错loc函数与iloc函数
loc函数是标签名索引
data.loc[row_indexer, column_indexer]iloc函数是位置索引
data.iloc[row_indexer, column_indexer]注意: 无论是iolc还是loc函数都是中括号[ ],而非小括号
# loc函数 # 提取某一列数据 data.loc[:,"Distressed.Securities"] # 提取某几列数据 data.loc[:,"Distressed.Securities":"Fixed.Income.Arbitrage"] # 提取特定的行和列 data.loc[:,"Distressed.Securities":"Fixed.Income.Arbitrage"] # 根据boolean值提取 data.loc[data.loc[:,"Fixed.Income.Arbitrage"]>0] # iloc函数 # 提取某一行数据 data.iloc[2] # 提取某一列数据 data.iloc[:,2] # 切片操作 data.iloc[0:3,0:2]1.5DataFrame的操作
# 转置 data.T # 排序与排名 data.sort_index(ascending=True) #按照索引进行排序 data.sort_values("Fixed.Income.Arbitrage") # 按照某一列的值进行排序 # 追加行和列——append函数和concat函数 df = pd.DataFrame(np.random.rand(2,13)) data.append(df) pd.concat([data, df],join="inner") # join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集 # 删除数据 ——drop函数和del函数 data.drop("Fixed.Income.Arbitrage", axis=1) # del data["Fixed.Income.Arbitrage"] #替换操作 data.loc[:, "Fixed.Income.Arbitrage"] = np.arange(0,len(data))1.6描述性统计
# 对新兴市场风格对冲基金收益率进行描述性统计 ——describe函数 EM_data = data['Emerging.Markets'] EM_data.describe() #计算算术平均数 ——使用mean函数 EM_data.mean() # 计算中位数 ——median函数 EM_data.median() # 计算众数 ——mode函数 EM_data.mode() # 计算10分位数和90分位数 ——quantile函数 [EM_data.quantile() for i in [0.1, 0.9]] # 方式二 EM_data.quantile([0.1,0.9]) # 求极差range ——max函数和min函数 EM_data.max() - EM_data.min() # 计算平均绝对偏差 ——mad函数 mad = sum([abs(x - EM_data.mean()) for x in EM_data] )/len(EM_data) # 不使用mad函数求得平均绝对偏差 EM_data.mad() # 使用mad函数 # 求标准差 ——std函数 EM_data.std()1.7高级函数
今天只学习了apply函数,后续还会补充~
apply函数——此处用于寻找每个月收益率最高的个股,配置参数如下:
DataFrame.apply(func, axis=0)func 代表函数;axis=0 时表示对每一列进行运算,axis=1 时表示对每一行进行运算
df.apply(max, axis=0) # 使用 max函数求得每一列的最大值 # 自定义函数——求极差 f = lambda x: x.max()-x.min() df.apply(f, axis=1)