데이터 시각화

2024. 11. 4. 23:51카테고리 없음

데이터 가져오기

  • pandas를 통해서 데이터를 가져온다.
import pandas as pd
data=pd.read_csv('/경찰청_보이스피싱 월별 현황.csv',encoding='euc-kr')
data.info()
  • 가져온 데이터를 리스트에 저장해 준다.
  • to_list 활용
#1
data2019=data[data['년']==2019]['전화금융사기 발생건수'].to_list()
data2019
  • enumerate와 append활용하여서 추가해 주기
data2019_1 = []
for i, year in enumerate(data['년']):
    if year == 2019:
        data2019_1.append(data['전화금융사기 발생건수'][i])
data2019_1
  • 2019년과 2021년 데이터를 두 개의 변수에 저장해 주었다.

그래프 출력

  • matplotlib라이브러리: 데이터 시각화 패키지
pip install matplotlib #colab은 설치해줄 필요 없음
import matplotlib.pyplot as plt #matplotlib라이브러리 선언
  • plt.plot(data): data의 데이터를 그래프에 나타내준다.
import matplotlib.pyplot as plt
plt.plot(data2021)

  • plt.show(): 데이터를 이용한 차트의 결과를 출력해 준다.
plt.plot(data2019)
plt.plot(data2021)
plt.show()

  • plt.plot(..., label='범례이름'): label속성으로 범례 이름을 넣어준다.
  • plt.legned(loc=''): 범례를 그래프에 표시하기 위해서 사용하는데, loc=""는 범례의 위치를 정해준다.
plt.plot(data2019,label='2019')
plt.plot(data2021,label='2021')
plt.legend()
plt.show()

  • 범례의 위치는 다음과 같이 정할 수 있다.
코드 의미
best 가장 적합한 위치
upper right 상단 오른쪽
upper left 상단 왼쪽
upper center 상단 가운데
lower right 하단의 오른쪽
lower left 하단의 왼쪽
lower center 하단의 중간
center left 중간의 왼쪽
center right 중간의 오른쪽
center 중간
right 오른쪽(중간)
  • plt.plot(..., marker='마커종류'): 마커의 모양을 설정해 준다.
마커 모양 의미
"." point
"," pixel
"o" circle
"v" triangle_down
"^" triangle_up
"<" triangle_left
">" triangle_right
"1" tri_down
"2" tri_up
"3" tri_left
"4" tri_right
"8" octagon
"s" square
"p" pentagon
"P" plus (filled)
"*" star
"h" hexagon1
"H" hexagon2
"+" plus
"x" x
"X" x (filled)
"D" diamond
"d" thin_diamond
"|" vline
"_" hline
0 (TICKLEFT) tickleft
1 (TICKRIGHT) tickright
2 (TICKUP) tickup
3 (TICKDOWN) tickdown
4 (CARETLEFT) caretleft
5 (CARETRIGHT) caretright
6 (CARETUP) caretup
7 (CARETDOWN) caretdown
8 (CARETLEFTBASE) caretleft (centered at base)
9 (CARETRIGHTBASE) caretright (centered at base)
10 (CARETUPBASE) caretup (centered at base)
11 (CARETDOWNBASE) caretdown (centered at base)
plt.plot(data2019,label='2019', marker='o')
plt.plot(data2021,label='2021',marker='*')
plt.legend(loc='best')
plt.show()

  • plt.plot(..., markersize=정수): 마커의 크기를 정수형태로 지정해 준다.
plt.plot(data2019,label='2019', marker='o',markersize=10)
plt.plot(data2021,label='2021',marker='*',markersize=5)
plt.legend(loc='best')
plt.show()

  • plt.plot(..., linestyle=''): 선의 형태를 지정해 준다.
종류 linestyle
'-'
'--'
'-.'
':'
plt.plot(data2019,marker='o',label='2019',markersize=4,linestyle='--')
plt.plot(data2021,marker='*',label='2021',markersize=4,linestyle='-.')
plt.legend()
plt.show()

  • plt.plot(..., linewidth=정수): 선 두께를 정수로 지정해 준다.
plt.plot(data2019, label='2019',marker='o',markersize=4, linestyle='--', linewidth=3)
plt.plot(data2021, label='2021',marker='*',markersize=4, linestyle='-.', linewidth=5)
plt.legend()
plt.show()

  • plt.plot(..., coor=""): 색상을 지정해 준다.
plt.plot(data2019, label='2019', marker='o', markersize=4, linestyle='--',linewidth=1.3, color='lightblue')
plt.plot(data2021, label='2021', marker='*', markersize=4, linestyle='-.',linewidth=1.3, color='lightgreen')
plt.legend()
plt.show()

  • plt.plot(..., 'ro-',...): 색깔, 마커 모양, 선 스타일 순서로 축약하여서 사용가능하다.
색깔+마커모양+선스타일 => 'ro-', 'b*--'등으로 표현한다.
plt.plot(data2019, 'ro--', label='2019')
plt.plot(data2021, 'b*-.', label=2021)
plt.legend()
plt.show()
  • plt.title('차트 제목'): 차트의 제목을 표시해 준다.
  • plt.grid(): 그리드 표시해 준다.
plt.plot(data2019,'bo--', label='2019발생건수')
plt.plot(data2021,'rs-.', label='2021발생건수')
plt.legend()
plt.title('보이스 피싱 발생 건수') #제목 삽입하기
plt.grid() #그리드 삽입하기
plt.show()

  • plt.xlabel('x축 제목'), plt.ylabel('y축 제목'): 각각 x, y축 제목을 삽입해 준다.
plt.plot(data2019,'bo--', label='2019발생건수')
plt.plot(data2021,'rs-.', label='2021발생건수')
plt.legend()
plt.title('보이스 피싱 발생 건수')
plt.grid()
plt.xlabel('년도')
plt.ylabel('발생빈도')
plt.show()

  • plt.xlim, plt.yim(시작값, 끝 값): x, y축의 범위를 지정해 준다.
plt.plot(data2019,'ro--', label='2019발생건수')
plt.plot(data2021,'bs-.', label='2021발생건수')
plt.legend()
plt.title('보이스 피싱 발생 건수')
plt.grid()
plt.xlabel('년도')
plt.ylabel('발생빈도')
plt.xlim(0,12) #0~12까지
plt.ylim(1500, 4500) #1500~4500까지
plt.show()

  • plt.xticks(눈금값, 레이블), plt.yticks(눈금값, 레이블): 눈금값은 x와 y축에 표시할 눈금을 의미하고, 레이블은 눈금값으로 표시할 레이블로 튜플이나 리스트로 설정해 준다.
plt.plot(data2019, 'ro--', label='2019')
plt.plot(data2021, 'b*-.', label='2019')
plt.legend()
plt.title('보이스 피싱 발생 건수')
plt.grid()
plt.xlabel('달(월)')
plt.ylabel('발생빈도')
plt.xticks(range(0,12),['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'])
plt.show()

  • 다른 방법으로는 pos에 range()를 x축의 길이만큼 설정해 주고 plot내부에 범위를 지정해 주는 형식으로 해주어도 상관없다.
x=['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월']
pos=range(len(x))
plt.plot(pos, data2019, 'ro--', label='2019발생건수')
plt.plot(pos, data2021, 'bs-.', label='2021발생건수')
plt.xticks(pos,x)
plt.legend()
plt.title('보이스 피싱 발생 건수')
plt.grid()
plt.xlim(-1,12)
plt.ylim(1500,4500)
plt.xlabel('달(월)')
plt.ylabel('발생빈도')
plt.show()

  • xticks, yticks(rotation=45): 45도만큼 label을 기울여 준다.
x=['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월']
pos=range(len(x))
plt.plot(pos, data2019, 'ro--', label='2019발생건수')
plt.plot(pos, data2021, 'bs-.', label='2021발생건수')
plt.xticks(pos,x, rotation=45)
plt.legend()
plt.title('보이스 피싱 발생 건수')
plt.grid()
plt.xlim(-1,12)
plt.ylim(1500,4500)
plt.xlabel('달(월)')
plt.ylabel('발생빈도')
plt.show()