Press "Enter" to skip to content

Pandas数据筛选之指定条件筛选

pandas库的数据筛选功能是非常强大的,我们在做数据分析的时候往往会经常遇到指定条件的数据筛选,下面我用一个实例来演示一下这个强大的功能。

首先打开一份数据

这是一份A股3月份交易的所有数据

我这里有一个需求,就是需要筛选出浦发银行,股票代码等于sh600000在3月份交易的所有数据,具体操作如下:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  #处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)   #无法对齐主要是因为列标题是中文
pd.set_option('expand_frame_repr', False)

df=pd.read_csv(r'data\a_stock_201903.csv',encoding='gbk')
result=df[df['股票代码']=='sh600000']
print(result)

这样我就筛选出了浦发银行,股票代码等于sh600000在3月份交易的所有数据

当然除了可以这样筛选,我们还可以使用函数来进行判断筛选 isin(),从它的字面意思我们就能大致知道它的意思就是是否在的意思

假设我需要选筛选出股票代码为sh600000、sh600004、sz000001的所有交易数据,就可以使用这个isin函数

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  #处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)   #无法对齐主要是因为列标题是中文
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 300)

df=pd.read_csv(r'data\a_stock_201903.csv',encoding='gbk')
result=df[df['股票代码'].isin(['sh600000','sh600004','sz000001'])]
print(result)

这样就能筛选出我指定的数据了

下面我们再来看一个筛选条件,就是只能多个筛选条件

假设我需要筛选出收盘价小于10元的数据,并且指定股票代码为sz300641

收盘价小于10元的数据 :df[‘收盘价’]<10

股票代码为sz300641 的数据:df[‘股票代码’]==’sz300641′

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  #处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)   #无法对齐主要是因为列标题是中文
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 300)

df=pd.read_csv(r'data\a_stock_201903.csv',encoding='gbk')
result=df[(df['收盘价']<10) & (df['股票代码']=='sz300641')]
print(result)

注意:

在pandas库里面 and 和 or 的符号分别是 & 和 | 并且每一个条件都需要用()括起来

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注