[파이썬] matplotlib 에서 y값을 조건부 합산하여 표기하는 법?
조회수 1139회
판매 raw data 에서 월별 주문수량 합계를 표로 나타내고 싶습니다. matplotlib 패키지 내에서 y값을 조건부 합산한 값으로 계산할 수 있나요? 주문 번호가 key 값이라서 그런지 표에서 Y축 최대값이 1로 나옶니다 ㅜㅜ (이미지 첨부했습니다)
-- 9/23 댓글보고 질문수정합니다!
RAW DATA : 시간단위로 기록된 주문수량 데이터 (연, 월, 일, 분, 초 단위 시간과 해당 시간의 주문수량이 기록됨)
그래프로 표현하고자 하는것 : 월별 주문수량 합계 (1월~6월)
현재 문제 : 월별 주문수량 합계가 아닌, 주문수량 1개로 그래프가 그려짐
[작성코드] sns.barplot(data=raw, x="Month", y="Oder_Quantity", ax=ax1)
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
raw 가 "order time" 이 datetime 타입 인덱스인 데이터프레임이라고 가정하겠습니다.
그런 경우에는 다음과 같이 월별 주문량 합을 그려볼 수 있습니다.
group_sum = raw.resample('m')['order quantity'].sum() group_sum.plot(kind='bar') plt.show()
"order time" 이 datetime 타입 인덱스가 아닌 스트링 컬럼이라면,
raw["order time"] = pd.to_datetime(raw["order time"]) # order time 컬럼의 타입을 datetime 으로 바꿈. raw.set_index("order time", inplace=True) # order time 컬럼을 인덱스로 설정함.
이런 작업이 선행되어야 할 수 있습니다.
- 시간데이터일 때에는 resample 이 유용합니다. 년, 월, 일 등은 컬럼 하나씩 만들어도 되긴 하죠. 주단위 그룹핑 등은 그런 방식으로 번거롭지만, resample 쓰면 한방에 됩니다.
- resample 은 시간데이터에 대한 groupby 랑 비슷한 것이기 때문에, groupby 이후 aggregate 하는 함수들 사용하는 방식은 동일합니다.
- 이미 year, month 컬럼을 만들어 놓았기 때문에, year_month 컬럼을 하나 더 만들어서 groupby 하는 방법도 있습니다.
댓글 입력