導語:
在數據分析前,篩選出我們所需要的數據是非常必要的手段,下面簡單介紹幾種方法:
導入數據
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也可以進行多字段篩選,但主要不能引用列名和格式書寫