pandas v1의 groupby에서 여러 통계를 얻고 싶다면

개요



pandas의 groupby에서 하나의 컬럼에 복수의 함수를 적용시키기 위해 dict 형식으로 agg()의 인수를 주고 있었지만, v1에서 그 기능이 삭제되어 버렸기 때문에 사용할 수 없게 되었다. 그 해결책.
데이터는 pandas 문서에 있던 것을 이용하고 있습니다.

데이터


animals = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog'],
                                 'height': [9.1, 6.0, 9.5, 34.0],
                                 'weight': [7.9, 7.5, 9.9, 198.0]})



이번에 시도한 처리와 오류


# kindごとに、heightの合計値と件数を集計し、それぞれ"sum_all", "count_all"という名前にする
animals.groupby("kind")["height"].agg({"sum_all":"sum", "count_all":"count"})
  • 예상하고 있던 출력(v1이 되기 전에는 되어 있었다)
  • 실제 출력
  • SpecificationError: nested renamer is not supported
    

    무엇이 원인이었는가


  • 문서의 whats new에 기재가 있었다
  • htps // 팬더 s. py였다. rg/panda s-do cs/s b/u/ts w/v1.0.0. HTML
  • nested renaming이라고 하는 것 같지만, 이것이 없어진 것 같다


  • Removed support for nested renaming in DataFrame.aggregate(), Series.aggregate(), core.groupby.DataFrameGroupBy.aggregate(), core.groupby.SeriesGroupBy.aggregate(), core.window.rolling.Rolling.aggregate() GH18529)
  • 이하에 기재가 있습니다만, 하나의 컬럼에 대해 aggregation과 rename를 동시에 실시할 수 없는 것 같다.
  • htps // 팬더 s. py였다. rg/panda s-do cs/s b/u/ts w/v0.20.0. http # ぁ ts 네 w-0200-Ap-b Reakin g-p-p-g-ro p-g-cct


  • 해결 방법


  • 집계와 rename을 동시에 실시하는 것이 문제이므로, 그것을 나누면 좋다
  • animals.groupby("kind")["height"].agg(["sum", "count"])
                                     .rename(columns={"sum": "sum_all", 
                                                      "count":"count_all"})
    

  • Named Aggrecation (v0.25의 기능) 사용
  • animals.groupby("kind")["height"].agg(sum_all="sum",
                                          count_all="count")
    
  • (참고) 컬럼을 하고 있지 않은 상태에서의 Named Aggrecation이라면 다음과 같은 쓰기 방법이 된다
  • 이 쓰는 방법으로 어떤 변수에 대해 집계할지 지정할 수 있으므로 알기 쉽다

  • animals.groupby("kind").agg(sum_all=("height", "sum"),
                                count_all=("height", "count"))
    

    참고


  • htps // 팬더 s. py였다. rg/panda s-do cs/ゔぇr 시온/1.0.0/우세 r_구이데/g 왁스 pby. html
  • h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 60229375 / 소 치 온 - 후 r s 페시 후 카치 오 네로 r-s-d-re-name r-s의 t-spo r d-우-아-아-아
  • 좋은 웹페이지 즐겨찾기