一. apply函數
作用:對 DataFrame 的某行/列應用函數之后,Apply 返回一些值。函數既可以使用默認的,也可以自定義。注意:在第二個輸出中應用 head() 函數,因為它包含了很多行。
#創建一個新函數 def num_missing(x): return sum(x.isnull()) #應用每一列 print "Missing values per column:" print data.apply(num_missing, axis=0) #axis=0 defines that function is to be applied on each column #應用每一行 print "\nMissing values per row:" print data.apply(num_missing, axis=1).head() #axis=1 defines that function is to be applied on each row
二. loc函數
作用:選擇屬性子集
subSalesDf=salesDf.loc[0:4,'購葯時間':'銷售數量']
三. rename函數
作用:列重命名
colNameDict = {'購葯時間':'銷售時間'} #將‘購葯時間’改為‘銷售時間’ salesDf.rename(columns = colNameDict,inplace=True)
四. dropna函數
作用:刪除缺失值,how='any'意為在給定的任何一列中有缺失值就刪除
salesDf=salesDf.dropna(subset=['銷售時間','社保卡號'],how='any') #刪除列(銷售時間,社保卡號)中為空的行
五. pd.to_datetime函數
作用:字符串類型的數據轉換成日期格式。傳入的格式是原始數據的日期格式——format='%Y-%m-%d'固定寫法:Y表示年、m表示月、d表示日。
salesDf.loc[:,'銷售時間']=pd.to_datetime(salesDf.loc[:,'銷售時間'], format='%Y-%m-%d', errors='coerce')
errors='coerce': 如果原始數據不符合日期的格式,轉換后的值為空值NaT。所以轉換之后我們還要運行一次刪除空值的代碼,因為不符合格式的日期被轉變為了空值需要刪除。
salesDf=salesDf.dropna(subset=['銷售時間','社保卡號'],how='any')
六. pd.sort_values
作用:對數據進行排序,by表示按那幾列進行排序,ascending=True 表示升序排列,ascending=False表示降序排列
salesDf=salesDf.sort_values(by='銷售時間', #按銷售日期進行升序排列 ascending=True)
七. reset_index函數
作用:生成從0到N按順序的索引值
salesDf=salesDf.reset_index(drop=True)
八. describe函數
作用:查看數據框中所有數據每列的描述統計信息:(count:總數,mean:平均數,std:標准差,min:最小值,25%:下四分位數,50%:中位數,75%:上四分位數,max:最大值)
salesDf.describe()
九. 刪除異常值
作用:假設最小值出現了小於0的情況,分析應該是記錄過程中出現錯誤所致。
第一步:設置查詢條件,這一步返回True和false
querySer=salesDf.loc[:,'銷售數量']>0
第二步:應用查詢條件
salesDf=salesDf.loc[querySer,:]
十. drop_duplicates函數
作用:將重復的數據刪除,同一個人發生的所有消費算作一次消費,根據列名(銷售時間,社區卡號),如果這兩個列值同時相同,只保留1條
kpi1_Df=salesDf.drop_duplicates( subset=['銷售時間', '社保卡號'] )
十一. groupby
作用:根據某一列分組
gb=groupDf.groupby(groupDf.index.month)
對分組后的數據應用函數
mounthDf=gb.sum()
十二. 不適=使用for循環的列表生成器
作用:當一個列表中的元素是由另外一個列表中對應元素經過運算得到時,可以省去for循環,適用一行代碼生成模型
x = [2,3,4,5] out = [item*2 for item in x] print(out)
十三. Lambda 表達式
作用:不使用def關鍵字,也沒有return。Lambda 表達式創造的函數和普通的 def 構建的函數沒什么不同,只不過函數體只有單獨一個表達式而已。
double=lambda x: x*2 #double是函數名,x是參數 print(double(3))
十四. map 和 filter 函數
1. map
作用:可以與Lambda表達式同時使用,map() 函數接收一個列表,和一個函數(可以是Lambda表達式),它對列表里的每個元素調用一個函數進行處理,再將結果放進一個新列表里。
result=list(map(double,x)) print(result)
2. filter
作用:它接收一個列表,和一個規則函數,在對列表里的每個元素調用這個規則函數之后,它把所有返回值為假的元素從列表中剔除,然后返回這個過濾后的子列表。
result2=list(filter(lambda a:a>4,x))
十五. arrange 函數
作用:arange() 函數按照指定的步長返回一個等差數列。除開始和結束值之外,你還可以自定義步長和數據類型。請注意,給定的結束值參數是不會被包含在結果內的。
result= np.arange(start,stop,step)
十六. linspace 函數
作用:將給定區間進行若干等分以后的等分點組成的數列。所以你傳入的參數包括開始值、結束值,以及具體多少等分。linspace() 將這個區間進行等分后,把開始值、結束值和每個等分點都放進一個 NumPy 數組里。這在做數據可視化以及繪制坐標軸的時候都很有用。
result4=np.linspace(2.0,3.0,num=5)
十七. 矩陣合並函數
1.Concat
作用:把一個或多個數據表按行(或列)的方向簡單堆疊起來(看你傳入的 axis 參數是 0 還是 1 咯)。
2. merge
作用:merge() 將會以用戶指定的某個名字相同的列為主鍵進行對齊,把兩個或多個數據表融合到一起。
3. join
join()和 merge() 很相似,只不過 join() 是按數據表的索引進行對齊,而不是按某一個相同的列。當某個表缺少某個索引的時候,對應的值為空(NaN)。
十八. pivot_table 函數
作用:它能幫你對一個數據表進行格式化,並輸出一個像 Excel 工作表一樣的表格。實際使用中,透視表將根據一個或多個鍵對數據進行分組統計,將函數傳入參數 aggfunc 中,數據將會按你指定的函數進行統計,並將結果分配到表格中。
pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')