logo
Loading...

執行例題中 agg function 時發生 nested renamer is not supported. 以及在記數或hash編碼後遇到的 Converge warning - Cupoy

老師們好: 我在執行範例及例題時, count_df=df.groupby("Ca...

ml100,ml100-d26

執行例題中 agg function 時發生 nested renamer is not supported. 以及在記數或hash編碼後遇到的 Converge warning

2020/07/08 下午 04:24
機器學習共學討論版
謝孟錡
觀看數:117
回答數:2
收藏數:0
ml100
ml100-d26

老師們好: 我在執行範例及例題時, > count_df=df.groupby("Cabin")['Name'].agg({"Cabin_count":"size"}).reset_index() 這步會遇到一個錯誤 nested renamer is not supported ![Screenshot_2020-07-08 Day_026_HW - Jupyter Notebook.png](http://kwassistfile.cupoy.com/000001732D7B5BEE000000016375706F795F72656C656173655155455354/1593602558560/large) 我查看網路上的一些資料有人建議可以改成 > count_df=df.groupby("Cabin")\ ['Name'].agg(Cabin_count=pd.NamedAgg(column="Name",aggfunc="size")).reset_index() 在我的 anaconda 上可以執行後者,但仍想請問這兩者的差異,以及如何解決前述的問題。(在 pandas 官網中都沒有看到這兩種寫法的介紹) 另外想問的問題是我在執行編碼後,會出現 C:\ProgramData\Anaconda3\lib\site-packages\sklearn\linear_model\_logistic.py:940: ConvergenceWarning: lbfgs failed to converge (status=1): STOP: TOTAL NO. of ITERATIONS REACHED LIMIT. ![Screenshot_2020-07-08 Day_026_HW - Jupyter Notebook(1).png](http://kwassistfile.cupoy.com/000001732D7B5BEE000000016375706F795F72656C656173655155455354/1593602558562/large) 想請問這個是否會影響到計算後的分數,對於這樣的 warning 執行上是否需要作出甚麼應對?

回答列表

  • 2020/07/09 下午 00:42
    Jeffrey
    贊同數:1
    不贊同數:2
    留言數:0

    1. nested renamer is not supported原因:

    "在新的pandas版本中,建議使用Aggregation來替代已棄用的" dict-of-dicts"方法,以命名特定於列的聚合的輸出"


    2. DataFrameGroupBy.agg(arg, *args, **kwargs)[source]

    所以第二種方式: 原本用 dict 的對應改成 Cabin v.s Name 跟 Cabin_count v.s. Size 相對關係手動建立 


    3. 可以把groupby 分成兩段執行:

    舉例:

    temp['total'] = pd.DataFrame(project_data.groupby(col1)[col2].agg({'total':'count'})).reset_index()['total']

    temp['Avg'] = pd.DataFrame(project_data.groupby(col1)[col2].agg({'Avg':'mean'})).reset_index()['Avg']


    temp['total'] = pd.DataFrame(project_data.groupby(col1)[col2].agg(total='count')).reset_index()['total']
    temp['Avg'] = pd.DataFrame(project_data.groupby(col1)[col2].agg(Avg='mean')).reset_index()['Avg']

  • 2020/07/09 下午 03:32
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    你要把原本:


    ```

    .agg({'total':'count'})

    ```


    改成


    ```

    .agg(total='count')

    ```


    主要是版本上的差異...