[Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 가로 막대 그래프를 만듭니다.

파이썬을 사용하여 Excel 파일 작업을 공부하고 있습니다.
오늘의 주의(복습)는, CSV의 로드와 그래프 작성에 관한 계속입니다.
파이썬에서 Excel을 조작하기 위해 openpyxl이라는 패키지를 사용하고 있습니다.

판매.csv
部門,1月,2月,3月
商品A,600,700,800
商品B,4100,3800,4500
商品C,2900,1800,3000
商品D,800,900,1000
商品E,600,550,720

위와 같은 CSV 파일을 로드



이런 막대 그래프를 만들어 붙이고 싶습니다.

CSV 로드, 붙여넣기
그곳을 바탕으로 그래프를 만듭니다.
차이는 세로 막대형 차트 또는 가로 막대형 차트일 뿐입니다.
BarChart 객체에서 사용할 수 있는 속성의 값을 변경하여 세로를 가로지릅니다.

여기까지는 전회와 같습니다.

그 다음에 다른 속성도 발견했기 때문에 주요 그런 것을 나열합니다.

BarChart 객체에서 사용할 수 있는 속성


  • type : 세로 막대 그래프는 'col', 가로 막대 그래프는 'bar'
  • bar.x_axis.scaling.min : 가로축 최소값
  • bar.x_axis.scaling.max : 가로축의 최대치
  • bar.y_axis.scaling.min : 세로축의 최소값
  • bar.y_axis.scaling.max : 세로축의 최대치
  • width: 그래프의 폭
  • height : 그래프의 높이
  • varyColors : 계열별로 색을 바꿀 때는 "True"
  • legend.position : 범례 항목의 위치. 오른쪽은 'r', 왼쪽은 'l', 위는 't', 아래는 'b'

  • 여기서 조심해야 할 것은

    본 목적에 가로축으로 되어 있는 값의 속성은 세로축(y_axis)으로 설정한다

    라는 것입니다.

    잘 표현할 수 없지만

    우선, 세로축으로 그래프의 내용을 설정하고 나서,
    가로축 그래프가 되도록 90도 기울인다.

    라고 표현하면 좋을까요. (전회에 계속해서 어휘력을 원한다)

    최종 코드


    import pandas as pd
    from openpyxl import Workbook
    from openpyxl.chart import BarChart, Reference
    from openpyxl.utils.dataframe import dataframe_to_rows
    
    wb = Workbook()
    ws = wb.active
    
    # CSVファイル読込み
    df = pd.read_csv('売上.csv', encoding='utf-8')
    for row in dataframe_to_rows(df, index=None, header=True):
        # データを1行ずつ追加
        ws.append(row)
    
    # 棒グラフを選択
    bar = BarChart()
    
    # 横棒グラフに設定
    bar.type = 'bar'
    
    # グラフのデータ範囲を設定
    data = Reference(ws, min_col=2, min_row=1,
                     max_col=ws.max_column, max_row=ws.max_row)
    
    # ラベルの範囲を設定
    labels = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
    
    # グラフにデータを追加
    bar.add_data(data, titles_from_data=True)
    
    # 縦軸(グラフ上では横軸)のラベルを追加
    bar.set_categories(labels)
    
    # 縦軸(グラフ上では横軸)の最小値を設定
    bar.y_axis.scaling.min = 0
    
    # 縦軸(グラフ上では横軸)の最大値を設定
    bar.y_axis.scaling.max = 4200
    
    # グラフの幅
    bar.width = 15
    
    # グラフの高さ
    bar.height = 7.5
    
    # 凡例項目の位置を設定
    bar.legend.position = 'b'
    
    # 横軸(グラフ上では縦軸)タイトルを追加
    bar.x_axis.title = '部門'
    
    # 縦軸(グラフ上では横軸)タイトルを追加
    bar.y_axis.title = '売上高(千円)'
    
    # グラフのタイトルを追加
    bar.title = '部門別売上高'
    
    # 棒グラフをシートに追加
    ws.add_chart(bar, 'A9')
    
    wb.save('部門別売上_横棒グラフ.xlsx')
    
    

    보충



    bar.add_data(data, titles_from_data=True)로 데이터를 추가한 후
    bar.set_categories(labels)에서 라벨을 추가하지 않으면
    잘 라벨이 반영되지 않는 것 같습니다.

    좋은 웹페이지 즐겨찾기