ComputerLanguage_Program/PYTHON
[PYTHON] fill_between 을 이용한 신뢰구간을 포함한 lineplot 구현하기
pbj0812
2021. 8. 6. 22:56
0. 목표
- fill_between 을 이용한 신뢰구간을 포함한 lineplot 구현하기
1. seaborn 의 lineplot
import seaborn as sns
flights = sns.load_dataset("flights")
sns.lineplot(data=flights, x="year", y="passengers")
2. 구현하기
0) library 호출
import seaborn as sns
import matplotlib.pyplot as plt
import math
1) 데이터 확인
flights.head()
2) 변수 생성
- flights_mean : 연도별 탑승자 평균
- flights_year : 연도
- flights_len : 연도별 데이터 길이
flights_mean = flights.groupby(by = 'year').agg({'passengers' : 'mean'})
flights_mean = list(flights_mean['passengers'])
flights_year = flights.year.unique()
flights_len = len(flights_year)
3) 연도별 표준편차 구하기
flights_std = []
for i in range(flights_len):
year = flights_year[i]
tmp = list(flights[flights['year'] == year]['passengers'])
tmp_mean = sum(tmp)/len(tmp)
tmp2 = []
for j in tmp:
tmp2.append((j - tmp_mean)**2)
flights_std.append(math.sqrt(sum(tmp2) / len(tmp)))
4) 연도별 신뢰도 구하기
- 신뢰도 95% 사용 => 1.96
flights_reliability = []
for i in flights_std:
flights_reliability.append(1.96 * i / math.sqrt(len(tmp)))
5) 연도별 신뢰구간 구하기
- 윗부분과 아랫부분 따로 연산
upper_ci = []
lower_ci = []
for i in range(len(flights_mean)):
upper_ci.append(flights_mean[i] + flights_reliability[i])
lower_ci.append(flights_mean[i] - flights_reliability[i])
6) 그림 그리기
# 도화지
fig, ax = plt.subplots()
fig.set_size_inches(15, 15)
# 신뢰구간
ax.fill_between(flights_year, upper_ci, lower_ci, facecolor='green', interpolate=True, alpha = 0.2)
# 평균
ax.plot(flights_year, flights_mean, 'g')
# x축, y축 제목
ax.set_xlabel('year', fontsize = 50)
ax.set_ylabel('passengers', fontsize = 50)
# x축, y축 폰트 사이즈
ax.tick_params(axis = 'x', labelsize = 20)
ax.tick_params(axis = 'y', labelsize = 20)
# 년도 데이터 전체 표출
ax.set_xticks(flights_year);
- 결과