2023. 10. 12. 16:30ㆍ공모전
matplotlib 라이브러리, pandas 라이브러리를 이용해 그래프를 그릴 수 있다.
히스토그램 그리기 (도수 분포표)
1.matplotlib 라이브러리
matplotlib 라이브러리의 pyplot 모듈의 hist 함수를 사용하여 구현.
plt.hist(data, color, alpha , bins,range)
color 색
alpha 투명도
bins x축의 칸의 수
bins = 50 이라면 50개의 칸이 생김. 만약에 [1, 2, 3, 4, 5] 이렇게 배열로 input을 줘서 직접 x 축을 지정할 수 있음.
range x축의 범위
range = [-10 , 10] 이라면 -10~10 사이의 값이 x축이 된다.
여러개의 hist를 그리고 plt.legend() 로 범례를 표시한후 plt.show()를 하여 보일 수 있다.
또 plt.xlabel로 x축이 무엇을 의미하는지 , plt.ylabel로 y축이 무엇인지 표시할 수 있다.
plt.rcParams[] 을 이용해서 그래프의 크기, 그래프 글꼴의 크기 등등 그래프와 관련된 옵션을 지정할 수 있다.
import matplotlib
pram = set()
for key in matplotlib.rcParams.keys():
if "." in key:
pram.add(key.split(".")[0])
print(pram)
'''
{'docstring', 'image', 'boxplot', 'axes', 'webagg',
'contour', 'ytick', 'tk', 'xtick', 'scatter', 'mathtext',
'xaxis', 'patch', 'text', '_internal', 'axes3d', 'keymap',
'yaxis', 'savefig', 'hatch', 'lines', 'pcolor', 'ps', 'date',
'hist', 'errorbar', 'svg', 'markers', 'path', 'figure', 'grid',
'polaraxes', 'font', 'agg', 'animation', 'pgf', 'legend',
'pcolormesh', 'pdf'}
'''
rcparams는 이런 key들이 있다.
plt.rcParams['font.size'] = 10
plt.rcParams['figure.figsize'] = (14,4)
이렇게 그래프와 관련된 옵션을 바꿀 수 있다. 단위는 inch이다.
matplotlib 라이브러리를 이용해 여러 subplot을 그릴 수 있다. 그렇게 하기위해선 figure을 이해해야한다.
figure은 전체 그림이라고 생각하면 된다.
fig = plt.figure()로 객체를 가져온 후 add_subplot(행,열,인덱스) 를 이용해 전체 figure의 위치를 배정 받을 수 있다.
예시로 data1과 data2에 대한 hist를 한줄로 2개 넣으려고 한다면, (2*1 크기의 그림에 1번째, 2번째에 배치)
fig=plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(data1)
ax2 = fig.add_subplot(2,1,2)
ax2.plot(data2)
fig.show()
이렇게 그릴 수 있다.
2.pandas 라이브러리
pandas 라이브러리를 이용
pandas 를 이용해 df 가 정의되었다고 사정.
1. df.hist()
2. df.plot.hist()
두가지 방식으로 hist를 그릴 수 있다.
1번째 경우 각 column 마다 hist를 그려주고 2번째의 경우 하나의 그래프에 겹쳐서 hist를 그려준다.
df.hist(column='a') 이렇게 특정한 열을 뽑아 그릴 수 도 있다.
df['a'].hist() 를 해도 상관없다.
하지만 df.hist(column=['a','b','c']) 이렇게 여러열을 넣을수는 없다.
그룹별로 hist를 그릴 수 있다.
이렇게 df에 그룹화가 되어있을때 column을 지정하던것처럼 df.hist(by='Q') 을 이용해
Q값이 같은 그룹 끼리 hist를 따로 그릴 수 있다. (하지만 이때는 1개 그룹마다 1개의 그래프가 할당되어서 a,b,c,d 열이 1개의 그래프에
겹쳐서 그려진다.)
또한 df.hist(column='a',by='Q') 로 Q값이 같은 그룹의 각그룹의 a열 hist를 그릴 수 있다.
bins x축의 칸의 수
df.hist(bins = 50) 를 하면 x축의 칸의수가 50이 된 상태로 그려진다.
density 밀도
df.hist(density = True) 로 설정하면 밀도함수가 되어서 막대아래의 면적이 1이 된다.
df의 열이 많을때 , 예를 들어 30개라고 가정하자.
df.hist()를 한다면 한번에 30개의 그래프가 그려져 보기가 어려워진다.
이때! 인덱싱을 통해 따로따로 그릴 수 있다.
df.iloc[행 범위 , 열 범위] 를 이용하자.
df.iloc[:,:12] 은 전체행에서 1~12번째 열까지의 컬럼을 나타낸다.
df.iloc[:,:12].hist() 은 1~12열에 대해서 hist를 그리라는 의미가 된다.
'공모전' 카테고리의 다른 글
코랩 연결끊김 방지 (0) | 2023.10.14 |
---|