python中數據分析常用函數整理


一. 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')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM