[Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 선 그래프를 만듭니다.
오늘의 주의(복습)는, CSV의 로드와 그래프 작성에 관한 계속입니다.
파이썬에서 Excel을 조작하기 위해 openpyxl이라는 패키지를 사용하고 있습니다.
판매.csv
部門,1月,2月,3月
商品A,600,700,800
商品B,4100,3800,4500
商品C,2900,1800,3000
商品D,800,1000,1200
商品E,600,450,300
이전과 마찬가지로 위에서 설명한 CSV 파일을 읽습니다.
(그래프의 보기 쉬움 향상을 위해, 조금 수치를 변경했습니다.)
이와 같은 꺾은선 그래프를 만들어 붙여넣고 싶습니다.
LineChart 객체
꺾은선형 차트 작성에는 LineChart 객체를 사용합니다.
그래프를 만드는 방법 자체는 막대 그래프와 동일하지만
이번에도 조심하는 포인트가 있습니다.
솔직히, 재료가 다해 왔기 때문에, 1000 배는 무리 화살을 더했습니다.
여담 : openpyxl에서 사용할 수있는 그래프
목적에 맞는 그래프를 선택하고 싶습니다.
사용할 수없는 것 외에도
개인적으로 레이더 차트가 선호됩니다.
그래프의 참조 데이터를 행/열로 전환
bar.add_data(Referenceオブジェクト, from_rows=True, titles_from_data=True)
이번에도 위와 같이 「from_rows=True」를 기술해
그래프의 참조 데이터를 행/열로 전환합니다.
매출금액을 1000배로
DataFrame[列名] *= 1000
pandas의 DataFrame 기능을 사용하여 열 이름을 지정하면 해당 열의 데이터를 얻을 수 있으므로
위와 같이 연산자를 사용하면 계산도 할 수 있습니다.
그러나 이번에는 모든 판매 데이터 (1 월 ~ 3 월 판매가 나열된 열)이므로
DataFrame[['1月', '2月', '3月']] *= 1000
라고 설명해 보았습니다.
DataFrame의 지정 열에 리스트를 넣어 보는 이미지입니다.
그러자 잘 작동했습니다.
하지만 이것이 있나요? ? ?
if 문으로 작성하는 것이 더 좋았습니까?
제대로 움직이고 있기 때문에, 좋은가? ? ?
최종 코드
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active
# CSVファイル読込み
df = pd.read_csv('売上.csv', encoding='utf-8')
# 各売上数値を1000倍
df[['1月', '2月', '3月']] *= 1000
for row in dataframe_to_rows(df, index=None, header=True):
# データを1行ずつ追加
ws.append(row)
# 折れ線グラフを選択
line = LineChart()
# 円グラフのスタイル設定
line.style = 10
# グラフのデータ範囲を設定
data = Reference(ws, min_col=1, min_row=2,
max_col=ws.max_column, max_row=ws.max_row)
# ラベルの範囲を設定
labels = Reference(ws, min_col=2, min_row=1, max_col=ws.max_column)
# グラフにデータを追加(参照方法を行列で切り替え)
line.add_data(data, from_rows=True, titles_from_data=True)
# 折れ線グラフのラベルを追加
line.set_categories(labels)
# 横軸タイトルを追加
line.x_axis.title = '月度'
# 縦軸タイトルを追加
line.y_axis.title = '売上高'
# グラフのタイトルを追加
line.title = '売上推移'
ws.add_chart(line, 'A9')
wb.save('部門別売上_折れ線グラフ.xlsx')
여담 : line.style의 종류
pie.style과 마찬가지로 line.style도
1~48까지의 정수치를 지정하는 것으로 스타일을 변경할 수 있습니다
전회와 같이 일람표를 만들어 보았습니다.
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active
# CSVファイル読込み
df = pd.read_csv('売上.csv', encoding='utf-8')
# 各売上数値を1000倍
df[['1月', '2月', '3月']] *= 1000
for row in dataframe_to_rows(df, index=None, header=True):
# データを1行ずつ追加
ws.append(row)
for i in range(1, 49):
line = LineChart()
line.style = i
data = Reference(ws, min_col=1, min_row=2,
max_col=ws.max_column, max_row=ws.max_row)
labels = Reference(ws, min_col=2, min_row=1, max_col=ws.max_column)
line.add_data(data, from_rows=True, titles_from_data=True)
line.set_categories(labels)
line.x_axis.title = '月度'
line.y_axis.title = '売上高'
line.title = F'{i}'
ws.add_chart(line, f'A{(i-1)*16+9}')
wb.save('部門別売上_折れ線グラフ一覧.xlsx')
다만, 원 그래프와 달리 색 분할이 동색의 그라데이션이라고 보기 어렵다・・・.
지난 며칠 그래프 작성만 공부했습니다.
「보이는 방법」은, 소중한구나~라고 다시 느낄 수 있었습니다.
자기만족이 아니라 상대방이 보고 어떻게 생각하는지 고민하면서
코드도 디자인도 만들 수 있게 되고 싶네요.
Reference
이 문제에 관하여([Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 선 그래프를 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rihu-do/items/efebc0cc4592ba465137
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active
# CSVファイル読込み
df = pd.read_csv('売上.csv', encoding='utf-8')
# 各売上数値を1000倍
df[['1月', '2月', '3月']] *= 1000
for row in dataframe_to_rows(df, index=None, header=True):
# データを1行ずつ追加
ws.append(row)
# 折れ線グラフを選択
line = LineChart()
# 円グラフのスタイル設定
line.style = 10
# グラフのデータ範囲を設定
data = Reference(ws, min_col=1, min_row=2,
max_col=ws.max_column, max_row=ws.max_row)
# ラベルの範囲を設定
labels = Reference(ws, min_col=2, min_row=1, max_col=ws.max_column)
# グラフにデータを追加(参照方法を行列で切り替え)
line.add_data(data, from_rows=True, titles_from_data=True)
# 折れ線グラフのラベルを追加
line.set_categories(labels)
# 横軸タイトルを追加
line.x_axis.title = '月度'
# 縦軸タイトルを追加
line.y_axis.title = '売上高'
# グラフのタイトルを追加
line.title = '売上推移'
ws.add_chart(line, 'A9')
wb.save('部門別売上_折れ線グラフ.xlsx')
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active
# CSVファイル読込み
df = pd.read_csv('売上.csv', encoding='utf-8')
# 各売上数値を1000倍
df[['1月', '2月', '3月']] *= 1000
for row in dataframe_to_rows(df, index=None, header=True):
# データを1行ずつ追加
ws.append(row)
for i in range(1, 49):
line = LineChart()
line.style = i
data = Reference(ws, min_col=1, min_row=2,
max_col=ws.max_column, max_row=ws.max_row)
labels = Reference(ws, min_col=2, min_row=1, max_col=ws.max_column)
line.add_data(data, from_rows=True, titles_from_data=True)
line.set_categories(labels)
line.x_axis.title = '月度'
line.y_axis.title = '売上高'
line.title = F'{i}'
ws.add_chart(line, f'A{(i-1)*16+9}')
wb.save('部門別売上_折れ線グラフ一覧.xlsx')
Reference
이 문제에 관하여([Python] pandas라는 라이브러리를 사용하여 CSV 파일을 읽고 선 그래프를 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rihu-do/items/efebc0cc4592ba465137텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)