python의 matplotlib로 PL표를 도표화하다

이번에는 Aplphabet(구 구글)의 PL 데이터로 도표를 만들었다.
우선 데이터를 준비하다.
PL 데이터는 알파벳의 IR 페이지에서 가져옵니다.
https://abc.xyz/investor/
일반적인 상황에서 재무 데이터는 아래의 이미지처럼 시간 서열을 가로로 표시하고 얻을 수 있는 데이터도 시간 서열을 가로로 저장하는 경우가 있다.

실제 결제 자료는 여기 있습니다.
https://abc.xyz/investor/static/pdf/20220202_alphabet_10K.pdf?cache=fc81690#page=51
그래서 이번에도 시간 서열의 가로 데이터부터 시작한다.
다음 CSV는 제가 직접 만든 것입니다.

CSV 여기 있습니다.
Alphabet_PL.csv
,13.12,14.12,15.12,16.12,17.12,18.12,19.12,20.12,21.12
Revenues,"55,519","66,001","74,989","90,272","110,855","136,819","161,857","182,527","257,637"
Cost of revenues,"21,993","25,691","28,164","35,138","45,583","59,549","71,896","84,732","110,939"
Research and development,"7,137","9,832","12,282","13,948","16,625","21,419","26,018","27,573","31,562"
Sales and marketing,"6,554","8,131","9,047","10,485","12,893","16,333","18,464","17,946","22,912"
General and administrative,"4,432","5,851","6,136","6,985","6,872","8,126","9,551","11,052","13,510"
European Commission fines,,,,,"2,736","5,071","1,697",0,0
Income from operations,"15,403","16,496","19,360","23,716","26,146","26,321","34,231","41,224","78,714"

1. 라이브러리 가져오기


이번에 사용한 프로그램 라이브러리를 가져옵니다.
import pandas as pd
import matplotlib.pyplot as plt

1. CSV 데이터 읽기


데이터 프레임에서 csv를 읽습니다.
df = pd.read_csv('Alphabet_PL.csv', index_col=0, thousands=',')
옵션의 뜻은 다음과 같다.index_col=0: index에 사용할 열을 지정합니다.thousands=',': flat로 읽을 각 천 자리 구분자의 기호를 지정합니다.
읽기 결과는 다음과 같습니다.

2. 데이터 매트릭스 반전


다음 데이터 프레임의 행렬을 df.T로 반전합니다.
이렇게 하면 index의 값이 연월이 되기 때문에 index명을 YYMM로 변경한다.
dft = df.T
dft.index.name = 'YYMM'
데이터 프레임의 내용은 다음과 같다.

3. 표시할 항목과 색을 도표화하기


표시할 항목의 배열을 지정합니다.
이번에는 영업이익Income from operations과 비용 항목만 보였다.
plot_cols = [
    'Income from operations', # 営業利益
    'European Commission fines', # 費用のひとつ
    'General and administrative', # 費用のひとつ
    'Sales and marketing',  # 費用のひとつ
    'Research and development', # 費用のひとつ
    'Cost of revenues', # 費用のひとつ
]
또한 각 항목의 도표에 있는 색도 배열 방식으로 지정한다.
plot_colors = [
    'deepskyblue',
    'gold',
    'lightsalmon',
    'salmon',
    'tomato',
    'darkgray',
]
색상은 여기서 적당히 선택했어요.
https://matplotlib.org/3.5.0/gallery/color/named_colors.html
마지막으로 도표를 만듭니다.데이터 프레임의 plot () 를 사용합니다.
dft[plot_cols].plot(
	kind="bar",
	stacked=True,
	label=plot_cols,
	color=plot_colors
)
각 옵션은 다음과 같습니다.kind="bar": 표시 형식을 스트라이프 상자로 지정합니다.stacked=True: 항목을 스택으로 표시합니다.label=plot_cols: 도례에 표시된 각 항목의 이름을 지정하기 전에 설정한 plot_cols.color=plot_colors: 표시되는 각 항목의 색상 앞에 설정된 plot_colors을 지정합니다.
도표의 제작 결과는 여기에 있다.

도례의 표시 순서는 도표와 반대로 X축의 YYYMM은 세로로 보이거나 약간 수정된 부분이 있으므로 여기까지만 하고 시간이 있을 때 수정 방법을 추가한다.

4. 요약


이번에 우리는 일반적인 PL표 형식의 데이터를 데이터 원본과 matplotlib을 통해 시각화했다.
코드량이 적지만 데이터 프레임의 유형 처리와 index가 지정한 관계로 다양한 혈 위치가 생각보다 시간이 걸린다.
읽기 전 CSV 데이터를 조금 더 정형화하고, 데이터 프레임 처리가 곧 더 나은 방법이 생길 것이라는 것을 깨닫는 등 개선할 수 있는 점은 수확이다.

좋은 웹페이지 즐겨찾기