해결된 질문
작성
·
196
0
연도별로 총 범죄 건수(범죄유형의 총합)의 월평균 값을 구한 후 그 값이 가장 큰 연도를 찾아, 해당 연도의 총 범죄 건수의 월평균 값을 출력하시오. (반올림하여 정수로 출력)
2020: 11, 2021: 9, 2022: 12, 2023: 9, 2024: 9
다음은 각 해당 년도별로 존재하는 월 데이터의 갯수입니다.
12개가 아니고 누락된 데이터가있더라구요
df['tot'] = df.loc[:,'강력범죄':'교통범죄'].sum(axis=1)
df['날짜'] = pd.to_datetime(df['날짜'],format = '%Y년 %m월')
dict = df.groupby(df.날짜.dt.year)['날짜'].count()
df.groupby(df.날짜.dt.year)['tot'].mean()
저는 다음과 같이 코드를 작성하였는데 풀이노트북엔 / 12로 되어있더라구요,,, 뭐가 맞는건가요?
mean으로하면 sum / 전체갯수 니까 값이 다른부분에 대해선 인지하고있습니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
최우영님의 질문에 대해 찾아본 결과, 연도별로 총 범죄 건수의 월평균 값을 구하는 과정에서의 혼동이 있으신 것 같습니다. 본 질문은 연도별 총 범죄 건수를 월별로 평균내는 방법에 대한 문제입니다. 여러분이 질문하신 부분과 유사한 상황을 해결한 사례가 있어 추천해드립니다.
기출6 유형1 문의드립니다. 관련하여, 연도별 총 범죄 건수의 월평균을 구하는 과정에서 df.groupby('연도')['총범죄'].sum()/12
사용 시 오류가 나는 경우가 있었습니다. 이는 그룹화 후 결과를 월 수로 나누려면 결과 데이터의 인덱스에 주의해야 한다는 점을 지적했습니다. 대신, .transform()
메소드를 사용하여 연도별 총 범죄 건수를 월평균으로 계산하는 방법을 제안했습니다.
기출6 유형1 문의드립니다.
의 답변에서, 연도별 총 범죄 합계를 월별로 나누는 과정에서는 .transform()
을 사용해야 합니다. 여기서 transform
이 필요한 이유는 원본 데이터프레임의 형태를 유지하면서 계산을 적용하기 위해서입니다.
이 경우와 유사하게, 여러분이 작성한 코드에서는 /12
대신 실제 각 연도별 데이터의 개수를 나타내는 값으로 나누어야 하는 상황에서 confusion이 발생한 것으로 보입니다. 질문자님의 접근 방식으로, 연도별 데이터의 실제 개수를 기준으로 평균을 계산하는 것이 더 정확할 수 있습니다. 이렇게 하면 누락된 데이터가 있을 때도 정확한 월평균 값을 구할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저도 이 부분 좀 혼란스러워서 질문드리려고했는데 이미 질문이 있군요!
즉 예시파일에는 누락된 달이 있지만, 실제 시험에선 누락된 달이 없으니 df_year = df.groupby('연도')['총범죄'].sum()/12로 가야한다는거죠?
사실 저도 df_year = df.groupby('연도')['총범죄'].mean()로 풀고나니 답이 515로 다르게 나왔는데...음 쨌든 '월평균'에 맞추려면 /12를 해야한다는 것으로 이해하겠습니다.