import matplotlib.pyplot as plt
Line Plot(선 그래프)
y = [2, 12, 6]
plt.plot(y)
# x좌표는 0부터 1씩 증가하며 자동 할당
plt.show()
# 그렸던 plot(그래프)들을 출력
x축, y축 설정해서 그려보기
x = [1, 2, 3]
y = [2, 4, 6]
plt.plot(x, y, ls = ':', color = 'hotpink', lw = 2, marker = 'D', mec = 'r', mfc = 'red',ms = 10)
plt.show()
속성값
import numpy as np
x = np.arange(8)
y = [5,2,3,6,8,7,5,7]
plt.plot(x, y, ls = ':', color = 'hotpink', lw = 2, marker = 'D', mec = 'red', mfc = 'pink',ms = 5)
plt.show()
x = np.arange(8)
y = [5,2,3,6,8,7,5,7]
# 색상코드표를 활용해서 색상 지정 가능
# https://www.rapidtables.org/ko/web/css/css-color.html
plt.plot(x, y, ls = '--', color = '#FF6347', lw = 2, marker = '$♥$', mec = 'g', mfc = 'g',ms = 10)
# 그래프 숫자 표시 범위 지정(xlim, ylim)
# 범위를 지정하여 그래프 확대, 축소 출력 가능
plt.xlim(-2, 10)
plt.ylim(-5, 12)
# 그리드 그리기(모눈종이, 격자눈금)
plt.grid()
# 눈금 출력하기
plt.yticks(y)
plt.show()
한글 인코딩하는 법 - matplotlib 한글이 깨졌을 때 사용!
from matplotlib import rc
rc('font', family = 'Malgun Gothic')
# font : 폰트를 설정하겠다
# family : 글꼴집합이라는 의미로 글꼴명을 적어주면됨
x = [2,3,4,5,6,7,8]
y1 = [5,7,3,9,1,8,6]
y2 = [9,5,7,2,3,7,1]
plt.plot(x, y1)
plt.plot(x, y2)
# x축이름 설정
plt.xlabel('X축')
# y축이름 설정
plt.ylabel('Y', rotation=0)
plt.show()
여러 개의 차트 하나의 공간에 그리기
x = [1,2,3,4]
y = [2,4,6,8]
z = [3,6,9,12]
plt.plot(x, label = 'x데이터')
plt.plot(y, label = 'y데이터')
plt.plot(z, label = 'z데이터')
# 범례 설정하기
# 범례 : 참고사항, 데이터를 식별하기 위한 text
plt.legend()
# 차트 제목 설정하기
plt.title('차트 제목', loc = 'right')
plt.show()
DataFrame 생성
import pandas as pd
df = pd.DataFrame(np.random.rand(50,4), columns=['A','B','C','D'])
# 최상단에 있는 데이터 확인
display(df.head(10))
# 최하단에 있는 데이터 확인
display(df.tail(10))
scatter 그래프 생성하기
plt.scatter(x = df['A'], y = df['B'], label = 'Group1', s=90, c='gray')
plt.scatter(x = df['C'], y = df['D'], label = 'Group2')
plt.legend()
plt.show()
바(막대) 그래프
x = [0,1,2,3,4,5]
y = [80,85,70,60,50,90]
plt.bar(x, y, color='pink')
plt.xlabel('스인개 반')
plt.ylabel('점수', rotation = 0)
# plt.text (x좌표, y좌표, 적고자하는 값)
for i in range(0, 6) :
plt.text(x[i], y[i]-5, f'{y[i]}')
# plt.text(x[0], y[0]-5, f'{y[0]}')
# plt.text(x[1], y[1]-5, f'{y[1]}')
# plt.text(x[2], y[2]-5, f'{y[2]}')
# plt.text(x[3], y[3]-5, f'{y[3]}')
# plt.text(x[4], y[4]-5, f'{y[4]}')
# plt.text(x[5], y[5]-5, f'{y[5]}')
# ylim을 설정해서 막대그래프 확대
plt.ylim(45, 100)
# 제목 달아주기
plt.title('스인개 반별 성적', loc = 'left')
plt.show()
barh(수평막대) 그래프
x = [0,1,2,3,4,5]
y = [80,85,70,60,50,90]
plt.barh(x, y)
plt.show()
데이터 분석에 필요한 라이브러리 로딩
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
데이터 로딩(불러오기)
data = pd.read_csv('./data/Traffic_Accident_2017.csv', encoding = 'euc-kr')
데이터 정보 확인
data.info()
data.shape
data.head()
data.columns
data['사망자수'].value_counts()
-요일별 사고건수 확인
-요일 순서대로(월 ~ 일) 출력
y= data['요일'].value_counts()
y.sort_index()
y = y[['월','화','수','목','금','토','일']]
y
x = y.index # y의 인덱스를 추출하여 x에 요일정보로 삽입
y1 = y.values
plt.bar(x, y1,color='pink')
plt.xlabel('요일')
plt.ylabel('사고건수', rotation = 90)
plt.title('요일별 교통사고 건수')
for i in range(0, 7) :
plt.text(x[i], y[i], f'{y[i]}')
plt.ylim(450, 650)
plt.show()
'display.max_columns', None : 모든 열 출력
pd.set_option('display.max_columns', None)
사고유형_대분류가 '차대차'인 경우만 출력
car = data[data['사고유형_대분류'] == '차대차']
car
car[['발생지시도','사상자수']]
car1 = car[['발생지시도','사상자수']].groupby(['발생지시도']).sum()
car1
x = car1.index
y = car1['사상자수']
# = car1.values
plt.figure(figsize = (15,8))
plt.plot(x, y, color='hotpink')
plt.title('차 vs 차 교통사고의 사상자수')
plt.xlabel('지역')
plt.ylabel('사상자 수', rotation=0)
plt.grid()
plt.show()
x = car1.index
y = car1['사상자수']
# = car1.values
plt.figure(figsize = (15,8))
plt.bar(x, y, color='hotpink')
plt.title('차 vs 차 교통사고의 사상자수')
plt.xlabel('지역')
plt.ylabel('사상자 수', rotation=0)
plt.grid()
plt.show()
car1 = car1.sort_values('사상자수', ascending = False)
x = car1.index
y = car1['사상자수']
# = car1.values
plt.figure(figsize = (15,8))
plt.bar(x, y, color='hotpink')
plt.title('차 vs 차 교통사고의 사상자수')
plt.xlabel('지역')
plt.ylabel('사상자 수', rotation=0)
plt.grid()
plt.show()