日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python處理大數(shù)據(jù)的2個神奇操作

Python有個處理大數(shù)據(jù)的庫,結(jié)合xlrd庫,在做一些大數(shù)據(jù)的處理統(tǒng)計工作的時候很好用,譬如做性能測試,你的結(jié)果數(shù)據(jù)如何統(tǒng)計,python有個庫pandas,這個就很擅長做這個工作,這里就講2個pandas的騷操作。 pandas中g(shù)roupby、Grouper和agg函數(shù)的使用。這2個函數(shù)作用類似,都是對數(shù)據(jù)集中的一類屬性進(jìn)行聚合操作,比如統(tǒng)計一個用戶在每個月內(nèi)的全部花銷,統(tǒng)計某個屬性的最大、最小、累和、平均等數(shù)值。

統(tǒng)計“ext price”這個屬性在每個月的累和(sum)值

 
 
 
  1. import pandas as pd 
  2. import collections 
  3. df = pd.read_excel("D:/Download/chrome/sample-salesv3.xlsx") 
  4. #print (df.head(10)) 
  5. df["date"] = pd.to_datetime(df["date"]) 
  6. # print (df.head(10)) 
  7. df1 = df.set_index("date").resample("M")['ext price'].sum() 
  8. # print(df1.head())  

統(tǒng)計每個用戶每個月"ext price"這個屬性的sum值,利用Grouper

 
 
 
  1. df2 = df.groupby(["name",pd.Grouper(key = "date",freq="M")])["ext price"] 
  2. print(df2.head(10))  

Agg

agg函數(shù),它提供基于列的聚合操作。而groupby可以看做是基于行,或者說index的聚合操作。

從實(shí)現(xiàn)上看,groupby返回的是一個DataFrameGroupBy結(jié)構(gòu),這個結(jié)構(gòu)必須調(diào)用聚合函數(shù)(如sum)之后,才會得到結(jié)構(gòu)為Series的數(shù)據(jù)結(jié)果。

而agg是DataFrame的直接方法,返回的也是一個DataFrame。當(dāng)然,很多功能用sum、mean等等也可以實(shí)現(xiàn)。但是agg更加簡潔, 而且傳給它的函數(shù)可以是字符串,也可以自定義,參數(shù)是column對應(yīng)的子DataFrame

獲取"ext price","quantity","unit price"3列的各自的累計值和均值

 
 
 
  1. df3 = df[["ext price","quantity","unit price"]].agg(["sum","mean"]) 
  2. print(df3.head())  

可以針對不同的列使用不同的聚合函數(shù)

 
 
 
  1. df4 = df.agg({"ext price":["sum","mean"],"quantity":["sum","mean"],"unit price":["mean"]}) 
  2. print(df4.head())  

也可以自定義函數(shù),比如,統(tǒng)計sku中,購買次數(shù)最多的產(chǎn)品編號,通過lambda表達(dá)式來做。

 
 
 
  1. #統(tǒng)計sku中,購買次數(shù)最多的產(chǎn)品編號 
  2. get_max = lambda x:x.value_counts(dropna=False).index[0] 
  3. get_max.__name__ = "most frequent" 
  4. df5 = df.agg({"ext price":["sum","mean"], 
  5.  "quantity":["sum","mean"], 
  6.  "unit price":["mean"], 
  7.  "sku":[get_max] 
  8.  }) 
  9. print(df5)  

如果希望輸出的列按照某個順序排列,可以使用collections的OrderedDict

 
 
 
  1. agg_dict = { 
  2.  "ext price":["sum","mean"], 
  3.  "quantity":["sum","mean"], 
  4.  "unit price":["mean"], 
  5.  "sku":[get_max] 
  6. #按照列名的長度排序。OrderedDict的順序是跟插入順序一致的 
  7. df6 = df.agg(collections.OrderedDict(sorted(agg_dict.items(),key=lambda x:len(x[0])))) 
  8. print(df6)  

源數(shù)據(jù)的鏈接:https://github.com/chris1610/pbpython/tree/master/data


本文名稱:Python處理大數(shù)據(jù)的2個神奇操作
文章鏈接:http://m.5511xx.com/article/cddggoc.html