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"))
df

1.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)