[Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 가로 막대 그래프를 만듭니다.
오늘의 주의(복습)는, 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 객체에서 사용할 수 있는 속성
여기서 조심해야 할 것은
본 목적에 가로축으로 되어 있는 값의 속성은 세로축(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)에서 라벨을 추가하지 않으면
잘 라벨이 반영되지 않는 것 같습니다.
Reference
이 문제에 관하여([Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 가로 막대 그래프를 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rihu-do/items/229de0b6bb93b9023f85
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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)에서 라벨을 추가하지 않으면
잘 라벨이 반영되지 않는 것 같습니다.
Reference
이 문제에 관하여([Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 가로 막대 그래프를 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rihu-do/items/229de0b6bb93b9023f85텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)