DataFrame中的数据选取与过滤

导语:

在数据分析前,筛选出我们所需要的数据是非常必要的手段,下面简单介绍几种方法:

导入数据

1 #导入pandas和numpy库
2 import pandas as pd
3 import numpy as np
4 from pandas import Series,DataFrame 
5 test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")
6 test.head(5)#显示前五行

 

 

 

 

•sample:简单随机选取

sample可以理解为随机简单抽样在后续数分析和挖掘中经常用到

 

1 test.sample(frac=0.01,random_state=1)
2 #frac选取的比例
3 #random_state=1中的数值代表固定数据的标识

 

 

 

 

 

•isin:根据字段筛选

单个字段筛选

 

1 test.loc[test["所属区域"]=="苏州"]

 

多列单个字段筛选

test.loc[(test["所属区域"]=="苏州")&(test["产品类别"]=="睡袋")].head(5)#需用()括起每个条件

 

 

 

多字段筛选可以用isin,个人感觉isin的用法类似sql中的in

单列多字段

1 test.loc[test["所属区域"].isin(["苏州","昆山"])] 

 

多列多字段

t=test.loc[(test["所属区域"].isin(["苏州","昆山"])&(test["产品类别"].isin(["睡袋","宠物用品"])))]
t.sample(n=4)

 

 

•query()方法

直接写表达式打方式,注意:它只直接作用于该列表的行或列名。

1 qt=test.query("(所属区域=='苏州'|所属区域=='昆山')&(产品类别=='睡袋'|产品类别=='宠物用品')")
2 qt.sample(n=4)

 

注:使用query时,所有的表达式都在引号中,且字符串引号与双引号要区分(即可以一种双引号一种单引号),且列名不需用引号(可理解为直接调用了列表则列名不需注释)。

 

总结:

1、单独进行或者单独进行列过滤用test[columns筛选条件/index筛选条件]

2、同时对行和列筛选test.loc[行筛选条件,列筛选条件],但是为单字段

3、同时对行和列筛选且多字段test.loc[test["columns"].isin([" "," ")]

4、query也可以进行多字段筛选,但主要不能引用列名和格式书写

posted @ 2020-07-31 12:01  瑶池里  阅读(5708)  评论(0编辑  收藏  举报