量化交易系列【2】Pandas数据筛选及处理相关操作

简介: 量化交易系列【2】Pandas数据筛选及处理相关操作

示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载


import pandas as pd


# 读取CSV文件
df = pd.read_csv('./000001.XSHE.csv')
df = df[:5]  # 取前5行数据
df

image.png

df['code'] = '000001.XSHE'  # 添加股票代码列
• 1


筛选数据


# 筛选指定股票代码数据
# 选取某一只股票
df[df['code']=='000001.XSHE']
# 选取多只股票,用isin后面接列表
df[df['code'].isin(['000001.XSHE','000002.XSHE'])]


# 筛选收盘价大于9的数据
df[df['close'] >= 9.0]


image.png


# 筛选日期在2015/1/5与2015/1/7之间的数据
df['date'] = pd.to_datetime(df['date'])   #将字符串的日期转换为日期类型
df[(df.date>='2015-01-05') & (df.date<='2015-01-07')]


image.png


处理缺失值


删除空值dropna


# how='any'表示只要有一个空值该行就删掉,how='all'所有列全为空值才删掉
df.dropna(how='any') 
df.dropna(subset=['涨跌幅','MACD死叉’],how='all')  # 表示 '涨跌幅','MACD死叉’这两个值均为空就删除改行


补全缺失值fillna


# 将缺失值给固定值,下面是将所有缺失值补位0
df.fillna(value='0')  
# 通过其他列的值补充该列的缺失值,下面示例:用收盘价来补充'MACD金叉死叉'空值
df['MACD金叉死叉'].fillna(value=df['收盘价'], inplace=True)
# 向上寻找最近的一个非空值来补充该位置forward fill
df.fillna(method='ffill')
# 向下寻找最近的一个非空值来补充该位置backward fill
df.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


image.png


df2 = df.iloc[3:5]
df2


image.png

# 将df1,df2上下拼接,ignore_index=True,表示去除原有的Index,重新用0,1,2.....代替
df3 = df1.append(df2,ignore_index=True)
df3


image.png


去除重复数据


df3.append(df2)


image.png


# 去除['close','open']列相同的数据,如果不写subset,表示两行所有数据均相同才会去除
# keep参数表示保留哪一行的数据:last表示最后一行,first表示第一行
df3.drop_duplicates(subset=['close','open'],keep='last',inplace=True)
df3


image.png

相关文章
|
28天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含&#39;Name&#39;和&#39;Age&#39;列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
28天前
|
索引 Python
如何使用Pandas进行数据合并?
Pandas的`merge()`, `join()`, `concat()`是数据合并的主要工具。基本步骤包括导入pandas,创建DataFrame,然后执行合并。示例中,创建了两个DataFrame `df1`和`df2`,通过`merge()`和`join()`进行外连接合并。`merge()`基于索引合并,`join()`默认也使用索引合并,展示了数据融合的不同方式。
13 0
|
28天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
29天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`进行降序排序;用`rank()`进行排名,如`df[&#39;A&#39;].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`。
23 6
|
3天前
|
数据挖掘 数据处理 索引
数据合并与连接:Pandas中的强大数据整合功能
【4月更文挑战第16天】Pandas是Python数据分析的库,提供数据合并与连接功能。本文聚焦于`merge`和`concat`函数。`merge`基于键合并DataFrame,如示例中`df1`和`df2`按&#39;key&#39;列合并,支持多种连接方式。`concat`则沿轴堆叠DataFrame,如`df3`和`df4`沿行连接。注意合并连接时键的一致性、选择合适连接方式及处理索引和数据结构,以确保数据准确一致。学习这些方法能有效整合多数据源,便于分析。
|
3天前
|
存储 数据库连接 数据处理
数据加载与保存:Pandas中的数据输入输出操作
【4月更文挑战第16天】Pandas是Python数据分析的强大工具,支持多种数据加载和保存方法。本文介绍了如何使用Pandas读写CSV和Excel文件,以及与数据库交互。`read_csv`和`to_csv`用于CSV操作,`read_excel`和`to_excel`处理Excel文件,而`read_sql`和`to_sql`则用于数据库的读写。了解这些基本操作能提升数据处理的效率和灵活性。
|
29天前
|
存储 Python
如何使用Pandas库对非数值型数据进行排序和排名?
在Pandas中,非数值型数据如字符串、日期和自定义类别也可排序。使用`sort_values()`对字符串列进行升序或降序排序,如`df.sort_values(by=&#39;Name&#39;, ascending=False)`。日期数据先用`pd.to_datetime()`转换,再排序。自定义排序可通过`argsort()`结合映射规则实现,例如根据预定义类别顺序排序。
18 7
|
29天前
|
数据可视化 Python
如何使用Python的Pandas库进行数据分组和聚合操作?
【2月更文挑战第29天】【2月更文挑战第105篇】如何使用Python的Pandas库进行数据分组和聚合操作?
|
30天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行/列;3) `fillna()`用常数、前/后一个值填充;4) `interpolate()`插值填充。根据需求选择合适的方法处理数据缺失值。
15 0
|
30天前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
【2月更文挑战第28天】【2月更文挑战第103篇】如何使用Python的Pandas库进行数据合并和拼接?