강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

합격님의 프로필 이미지
합격

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

10회 기출유형 (작업형1)

변수명?? 설정관련 질문

해결된 질문

작성

·

32

·

수정됨

0

10회 기출 작업형1

1. 문제 1에서

df=df.groupby('sub_topic')['is_correct'].mean()

df.sort_values('is_correct', ascending=False).drop_duplicates()

이렇게 했는데 오류가 나타나던데,, 이렇게 하면 안되는건가요?

해설에는

result = acc.sort_values(ascending=False).drop_duplicates()

sort_values('컬럼명', ~~)이라고 보아서,, 해설처럼 ('컬럼명')을 안해도되나요?

2. 문제2-2에서

cond=df['year-month']=='2024-10'

targetdata=df[cond]

df.groupby('category')['price'].sum()

이렇게 해도 괜찮을까요?

targetdata.groupby~

df.groupby

차이점을 정확하게 잘 르겠습니다ㅠ df를 일단 계속 쓰다보니까 헷갈려서요ㅠ

변수명 설정? 하는게 좀 헷갈리는 것 같습니다ㅠ

groupby나 cond하고 나서 새로운 변수?로 설정하는것인가요?

뭔가 df=df~~랑 헷갈리는 것 같습니다ㅠ

좋은강의 감사드립니다!

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

  1. .sort_values('컬럼명', ~~)으로 사용하는 것이 일반적인데 데이터프레임에서만 가능해요
    이 상황은 컬럼이 1개 밖에 없는 시리즈 형태입니다 (acc 출력해서 확인 요청) 이때는 컬럼명 지정이 불가능합니다.
    지금까지 데이터프레임 형태로만 만들어져서 혼란스러울 수도 있겠네요! 그렇다고 데이터 프레임으로 만드는 건 더 복잡해질 것 같아요! 방법1이 어렵다면 2로 부탁드립니다.

  2. 데이터 변경 작업 후, 변수에 든 값을 모두 print()출력해서 확인해 보시면 좋을 것 같아요!


    헷갈린다면 targetdata 를 사용하지 말고 df로만 사용해주세요 🙂


cond = df["year_month"] == target_ym
df = df[cond]
cate = df.groupby("category")["price"].sum()
print(cate.max())

0

안녕하세요, 인프런 AI 인턴입니다. 합격님.

여러 질문과 혼동되는 부분이 있으신 것 같습니다. 각 부분에 대해 자세히 설명드릴게요.

1. groupby, sort_values과 drop_duplicates의 조합

df.groupby('sub_topic')['is_correct'].mean() 을 수행한 후, sort_valuesdrop_duplicates 메서드를 사용할 때의 문제점은, 각 메서드가 어떠한 객체로 작동하는지에 따라 발생할 수 있습니다.

  • sort_values('is_correct', ascending=False)DataFrame 에서만 사용 가능한 메서드가 아니라 Series 에서도 쓸 수 있습니다. 하지만, 보통 DataFrame 에 적용하여 원하는 컬럼을 정렬합니다.
  • 만약 groupby 연산 후 나온 결과에 대해 sort_values 를 바로 사용하려면 정렬하고자 하는 데이터가 DataFrame 형태가 되어야 합니다. groupby 에 이어지는 연산이 Series 타입일 때, 특정 컬럼명을 지정해 사용하면 안 됩니다.

해결 방법은 mean() 결과가 Series일 수 있으므로, 이를 reset_index()로 변환해 DataFrame으로 만든 후, sort_values를 사용하여 정렬하고 drop_duplicates를 수행하는 것입니다.

2. 조건과 그룹별 연산

조건 cond=df['year-month']=='2024-10' 을 설정하고 나서 이를 사용해 새로운 DataFrame을 만들어 작업하는 것이 일반적인 방법입니다.

  • targetdata.groupby('category')['price'].sum() 과 같이 조건을 사용하여 축소한 데이터에 대해 그룹 연산을 수행하는 것이 안전하며, 원래 데이터프레임 df에 대한 변경을 최소화할 수 있습니다.
  • targetdatadf 에서 각각 groupby를 사용할 경우, 적용 범위가 달라집니다. targetdata는 이미 필터링된 데이터를 대상으로 하고, df는 원본 데이터를 대상으로 합니다.

변수명을 설정할 때, 연산 결과를 명확히 하여 변수에 할당하고, 이후 단계별로 체계적으로 사용할 수 있도록 관리하는 것이 중요합니다.

관련 내용 도움이 될 만한 URL:

  1. Python Pandas Tutorial: groupby and Sort Python Pandas: 이 URL에서는 Python과 Pandas에서의 groupbysort_values 활용에 대한 설명이 잘 나와 있습니다.

이해를 돕기 위해 비슷한 유형의 질문 및 답변 링크를 제공하였으니, 더욱 도움이 되셨으면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

합격님의 프로필 이미지
합격

작성한 질문수

질문하기