量化交易系列【2】Pandas数据筛选及处理相关操作
筛选数据处理缺失值删除空值dropna补全缺失值fillna 排序函数合并操作去除重复数据示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载
import pandas as pd
# 读取CSV文件df = pd.read_csv('./000001.XSHE.csv')df = df[:5] # 取前5行数据df
df['code'] = '000001.XSHE' # 添加股票代码列
筛选数据
# 筛选指定股票代码数据# 选取某一只股票df[df['code']=='000001.XSHE']# 选取多只股票,用isin后面接列表df[df['code'].isin(['000001.XSHE','000002.XSHE'])]
# 筛选收盘价大于9的数据df[df['close'] >= 9.0]
# 筛选日期在/1/5与/1/7之间的数据df['date'] = pd.to_datetime(df['date']) #将字符串的日期转换为日期类型df[(df.date>='-01-05') & (df.date<='-01-07')]
处理缺失值
删除空值dropna
# how='any'表示只要有一个空值该行就删掉,how='all'所有列全为空值才删掉df.dropna(how='any') df.dropna(subset=['涨跌幅','MACD死叉’],how='all') # 表示 '涨跌幅','MACD死叉’这两个值均为空就删除改行
补全缺失值fillna
# 将缺失值给固定值,下面是将所有缺失值补位0df.fillna(value='0') # 通过其他列的值补充该列的缺失值,下面示例:用收盘价来补充'MACD金叉死叉'空值df['MACD金叉死叉'].fillna(value=df['收盘价'], inplace=True)# 向上寻找最近的一个非空值来补充该位置forward filldf.fillna(method='ffill')# 向下寻找最近的一个非空值来补充该位置backward filldf.fillna(method='bfill')# 判断缺失值df[df['涨跌幅'].notnull()] #找出'涨跌幅'不为null的数据df[df['涨跌幅'].isnull()] #找出'涨跌幅'为null的数据
排序函数
# 重置索引,新的index为0,1,2,3...df.reset_index(inplace=True) # 按照某一列进行排序, by指按照什么进行排序df.sort_values(by=['交易日期'],ascending=True) ## 按照多列进行排序df.sort_values(by=['股票名称','交易日期'], ascending=[True, True]) #
合并操作
df1 = df.iloc[0:2]df1
df2 = df.iloc[3:5]df2
# 将df1,df2上下拼接,ignore_index=True,表示去除原有的Index,重新用0,1,2.....代替df3 = df1.append(df2,ignore_index=True)df3
去除重复数据
df3.append(df2)
# 去除['close','open']列相同的数据,如果不写subset,表示两行所有数据均相同才会去除# keep参数表示保留哪一行的数据:last表示最后一行,first表示第一行df3.drop_duplicates(subset=['close','open'],keep='last',inplace=True)df3