데이터 분석해보기(hist)

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