<목차>
1. 기본적 산점도 그리기
2. 점 모양, x,y 축의 이름 지정
3. log - scale
4. 색과 다른 정보 추가
matplotlib을 통해서 산점도를 그리는 방법에 대해서 알아보겠습니다.
*사용한 자료는 제 블로그의 adsense 한달 간의 노출RPM과 노출수의 상관관계를 파악해 보겠습니다.
**그리고 추가로 노출가능한 active_view의 퍼센테이지 역시 어떤 상관관계를 가지고 있는지 알아보겠습니다.
1.기본적인 산점도 그리기
산점도는 plt.scatter(x,y)를 통해서 그릴 수 있습니다.
저의 x는 노출수, y는 노출rpm으로 지정했습니다.
plt.scatter(노출수,노출rpm)
을 사용하면 바로 산점도가 나타납니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pandas as pd
from matplotlib import pyplot as plt
data = pd.read_csv("adsensetotal.csv",index_col =0)
노출수 = data['노출수']
노출rpm = data['노출rpm($)']
plt.scatter(노출수,노출rpm)
plt.tight_layout()
plt.show()
|
cs |
이렇게 나온 산점도는 아무것도 알아낼 수 있는 인사이트가 없습니다.
그렇다면 여기에 몇가지를 더 추가해보겠습니다.
2. 점의 모양 꾸미기, x,y 축 label 추가하기
자세한 것은 matplotlib 문서를 찾아보면 나오지만
저는 점의 edgecolor를 검은색으로 하고, x축과 y축의 이름을 추가해 보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import pandas as pd
from matplotlib import pyplot as plt
data = pd.read_csv("adsensetotal.csv",index_col =0)
노출수 = data['노출수']
노출rpm = data['노출rpm($)']
plt.scatter(노출수,노출rpm,edgecolor = 'black', linewidth = 1,alpha=0.75)
plt.xlabel('노출수')
plt.ylabel('노출RPM')
plt.tight_layout()
plt.show()
|
cs |
아까보다는 보기에 좋아졌지만 여전히 무엇인가를 알아내기에는 부족합니다.
그렇기에 x,y의 자료를 log scale을 이용해서 풀어줘야 합니다.
3. log-scale 적용하기
log 스캐일을 적용하기 위해서는
plt.xscale('log')
plt.yscale('log')
사용해주시면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import pandas as pd
from matplotlib import pyplot as plt
#plt.style.use('fivethirtyeight')
data = pd.read_csv("adsensetotal.csv",index_col =0)
노출수 = data['노출수']
노출rpm = data['노출rpm($)']
plt.scatter(노출수,노출rpm,edgecolor = 'black', linewidth = 1,alpha=0.75)
plt.xlabel('노출수')
plt.ylabel('노출RPM')
plt.xscale('log')
plt.yscale('log')
plt.tight_layout()
plt.show()
|
cs |
4. 색을 이용하여 다른 정보와의 상관관계 살펴보기
노출가능 Active_view(%)를 색으로 나타냅니다.
c = 노출가능 Active_view를 이용하여 추가할 수 있습니다.
그리고
plt.colorbar()를 이용하여 수치에 따른 색의 변화를 보여줄 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import pandas as pd
from matplotlib import pyplot as plt
#plt.style.use('fivethirtyeight')
data = pd.read_csv("adsensetotal.csv",index_col =0)
노출수 = data['노출수']
노출rpm = data['노출rpm($)']
조회가능Active_view= data['조회가능Active_view(%)']
plt.scatter(노출수,노출rpm,c=조회가능Active_view,cmap='summer',edgecolor = 'black', linewidth = 1,alpha=0.75)
cbar = plt.colorbar()
cbar.set_label('노출가능Active_view(%)')
plt.xlabel('노출수')
plt.ylabel('노출RPM')
plt.xscale('log')
plt.yscale('log')
plt.tight_layout()
plt.show()
|
cs |
완성된 산점도를 통해서 보았을 때, 노출수와 노출RPM의 관계는 당연하게도 양의 상관관계를 가지고 있기는 한데 그 강도가 생각보다 약하다는 것을 알 수 있습니다.
노출 RPM을 산정하는데는 노출수 외의 다른 요소가 들어간다는 것을 알 수 있습니다.
조금이라도 이 글을 읽으신 분께 도움이 되셨기를 바라며 이상으로 마치겠습니다.
'데이터분석 > Python matplotlib' 카테고리의 다른 글
<matplotlib> 실시간 데이터 반영 그래프 (4) | 2021.08.29 |
---|---|
<Matplotlib> 선 그래프 사이를 채워서 차이 나타내기 (0) | 2021.08.24 |
<Python Matplotlib> Stack Plot 누적 그래프 그리기 (0) | 2021.08.20 |
<Python matplotlib> Pie chart 만들기 (0) | 2021.08.17 |
<Python matplotlib> matplotlib 한글 폰트 깨짐 수정[진짜 되는 수정] 따라만 하세요 (0) | 2021.08.16 |