데이터 시각화
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()




