91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas如何實現groupby分組的apply轉換

發布時間:2021-09-10 10:35:31 來源:億速云 閱讀:277 作者:chen 欄目:大數據

本篇內容介紹了“Pandas如何實現groupby分組的apply轉換”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

知識:Pandas的GroupBy遵從split、apply、combine模式

Pandas如何實現groupby分組的apply轉換

這里的split指的是pandas的groupby,我們自己實現apply函數,apply返回的結果由pandas進行combine得到結果

 
GroupBy.apply(function)
  • function的第一個參數是dataframe

  • function的返回結果,可是dataframe、series、單個值,甚至和輸入dataframe完全沒關系

 
本次實例演示:
  1. 怎樣對數值列按分組的歸一化?

  2. 怎樣取每個分組的TOPN數據?

 

實例1:怎樣對數值列按分組的歸一化?

將不同范圍的數值列進行歸一化,映射到[0,1]區間:

  • 更容易做數據橫向對比,比如價格字段是幾百到幾千,增幅字段是0到100

  • 機器學習模型學的更快性能更好

歸一化的公式:

Pandas如何實現groupby分組的apply轉換

 
演示:用戶對電影評分的歸一化

每個用戶的評分不同,有的樂觀派評分高,有的悲觀派評分低,按用戶做歸一化

import pandas as pd
 
ratings = pd.read_csv(
    "./datas/movielens-1m/ratings.dat", 
    sep="::",
    engine='python', 
    names="UserID::MovieID::Rating::Timestamp".split("::")
)
ratings.head()

Pandas如何實現groupby分組的apply轉換


# 實現按照用戶ID分組,然后對其中一列歸一化
def ratings_norm(df):
    """
    @param df:每個用戶分組的dataframe
    """
    min_value = df["Rating"].min()
    max_value = df["Rating"].max()
    df["Rating_norm"] = df["Rating"].apply(
        lambda x: (x-min_value)/(max_value-min_value))
    return df

ratings = ratings.groupby("UserID").apply(ratings_norm)
 
ratings[ratings["UserID"]==1].head()

Pandas如何實現groupby分組的apply轉換


 

可以看到UserID==1這個用戶,Rating==3是他的最低分,是個樂觀派,我們歸一化到0分;

 

實例2:怎樣取每個分組的TOPN數據?

獲取2018年每個月溫度最高的2天數據

fpath = "./datas/beijing_tianqi/beijing_tianqi_2018.csv"
df = pd.read_csv(fpath)
# 替換掉溫度的后綴℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
# 新增一列為月份
df['month'] = df['ymd'].str[:7]
df.head()

Pandas如何實現groupby分組的apply轉換

 
def getWenduTopN(df, topn):
    """
    這里的df,是每個月份分組group的df
    """
    return df.sort_values(by="bWendu")[["ymd", "bWendu"]][-topn:]

df.groupby("month").apply(getWenduTopN, topn=1).head()

Pandas如何實現groupby分組的apply轉換


我們看到,grouby的apply函數返回的dataframe,其實和原來的dataframe其實可以完全不一樣


“Pandas如何實現groupby分組的apply轉換”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济阳县| 宁蒗| 武城县| 朔州市| 沧州市| 湖北省| 黄陵县| 曲水县| 临猗县| 定陶县| 禹城市| 凌源市| 青冈县| 昭苏县| 麟游县| 延津县| 左云县| 班戈县| 呼玛县| 息烽县| 唐山市| 金川县| 锡林郭勒盟| 苏尼特左旗| 保德县| 万山特区| 武冈市| 安溪县| 汽车| 枣强县| 蓝田县| 临沧市| 汾阳市| 濉溪县| 永康市| 古丈县| 天等县| 丰顺县| 巴青县| 慈利县| 佛山市|