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"})
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"})
# kindごとに、heightの合計値と件数を集計し、それぞれ"sum_all", "count_all"という名前にする
animals.groupby("kind")["height"].agg({"sum_all":"sum", "count_all":"count"})
SpecificationError: nested renamer is not supported
무엇이 원인이었는가
Removed support for nested renaming in DataFrame.aggregate(), Series.aggregate(), core.groupby.DataFrameGroupBy.aggregate(), core.groupby.SeriesGroupBy.aggregate(), core.window.rolling.Rolling.aggregate() GH18529)
해결 방법
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")
animals.groupby("kind").agg(sum_all=("height", "sum"),
count_all=("height", "count"))
참고
Reference
이 문제에 관하여(pandas v1의 groupby에서 여러 통계를 얻고 싶다면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mk_GF/items/9635b7fc84d38365470a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)