[파이썬] 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)

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 질문이 이해가 안 됩니다. 원하는 것을 좀 더 자세히 말씀해 주세요. nowp 2019.9.17 10:19
  • 질문 수정했습니다~! 알 수 없는 사용자 2019.9.23 19:59

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 하는 방법도 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)