과제2. Seaborn 내장데이터 셋을 활용해서 데이터를 전처리해보기
# 기본 세팅
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
2-1 flights 데이터셋을 활용해서 그래프를 그려보기
flights_data = sns.load_dataset('flights')
flights_data.head()
1) 연도별 총 승객 수
더보기

# year별로 총 passengers 수 구한 뒤
total_passengers_year = flights_data.groupby('year')['passengers'].sum().reset_index()
total_passengers_year.columns = ['year','total_passengers']
# 시각화 작업
plt.figure(figsize=(10, 6))
plt.plot(total_passengers_year['year'],total_passengers_year['total_passengers'])
plt.title('Total Passengers Per Year')
plt.xlabel('year')
plt.ylabel('total passengers')
plt.grid(True)
plt.show()

2) 연도별 평균 승객 수
더보기

# 연도별 평균 승객수 구한 뒤
total_passengers_year = flights_data.groupby('year')['passengers'].mean().reset_index()
total_passengers_year.columns = ['year','avg_passengers']
# 시각화 작업
plt.figure(figsize=(10, 6))
plt.plot(total_passengers_year['year'],total_passengers_year['avg_passengers'])
plt.title('Average Passengers Per Year')
plt.xlabel('year')
plt.ylabel('avg passengers')
plt.show()

3) 승객 수 분포
더보기

plt.figure(figsize=(8, 6))
plt.hist(flights_data['passengers'], bins=20, edgecolor = 'black')
plt.title('passengers Distribution')
plt.xlabel('Passengers')
plt.ylabel('Frequency')
plt.show()

4) 연도별 승객 수와 월간 승객 수
> 풀지 못하고 답안 참고.. for문 활용
더보기

for month in flights_data['month'].unique():
plt.scatter(flights_data[flights_data['month'] == month]['year'],
flights_data[flights_data['month'] == month]['passengers'],
label = month, alpha = 0.7)
plt.title('Passengers per Year by Month')
plt.xlabel('Year')
plt.ylabel('Passengers')
plt.legend()
plt.show()

5) 월별 승객 수 분포
> 풀지 못하고 답안 참고 for문 활용 이번엔 한줄로
더보기

plt.figure(figsize = (8,6))
plt.boxplot([flights_data[flights_data['month'] == month]['passengers'] for month in flights_data['month'].unique()],
labels = flights_data['month'].unique())
plt.title('Passengers Distribution by month')
plt.xlabel('month')
plt.ylabel('passnegers')
plt.show()

2-2 tips 데이터셋을 활용해서 그래프를 그려봅시다
tips_data = sns.load_dataset('tips')
tips_data.head()
1) 요일별 팁 금액의 평균
- 제목 : Average Tips by Day
- X축 : Day of the Week
- Y축 : Average Tip Amount
더보기

plt.figure(figsize=(8, 6))
tips_day = tips_data.groupby('day')['tip'].mean()
plt.bar(tips_day.index, tips_day.values, width = 0.5)
plt.title('Average Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Average Tip Amount')
plt.grid(True)
plt.show()

2) 요일별 총 팁 금액
- 제목 : Total Tips by Day
- X축 : Day of the Week
- Y축 : Total Tip Amount
더보기

plt.figure(figsize=(8, 6))
total_tips = tips_data.groupby('day')['tip'].sum()
plt.bar(total_tips.index, total_tips.values, width = 0.5)
plt.title('Total Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Tip Amount')
plt.show()

3) 식사 금액 분포
- 제목 : Distribution of Total Bill
- X축 : Total Bill Amount
- Y축 : Frequency
더보기

plt.figure(figsize=(8, 6))
plt.hist(tips_data['total_bill'], bins=20, edgecolor='black', alpha=0.7)
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Frequency')
plt.show()

4) 식사 금액과 팁 금액의 관계
- 제목 : Tip Amount vs Total Bill
- X축 : Total Bill Amount
- Y축 : Tip Amount
더보기

plt.figure(figsize=(8, 6))
plt.scatter(tips_data['total_bill'], tips_data['tip'], alpha=0.7)
plt.title('Tip Amount vs Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Tip Amount')
plt.show()

5) 요일별 식사 금액 분포
제목 : Total Bill Distribution by Day
X축 : Day of the Week
Y축 : Total Bill Amount
더보기

# 1)
plt.figure(figsize = (8,6))
plt.boxplot([tips_data[tips_data['day'] == day]['total_bill'] for day in tips_data['day'].unique()],
labels = tips_data['day'].unique())
>답안
plt.figure(figsize=(8, 6))
sns.boxplot(x='day', y='total_bill', data=tips_data, palette='Set2')
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Bill Amount')
plt.show()

'[스파르타코딩클럽]데이터분석 과정 > PYTHON' 카테고리의 다른 글
[Python 코드카타] 64 ~ 66번 (프로그래머스) (0) | 2024.01.29 |
---|---|
[Python 코드카타] 61 ~ 63번 (프로그래머스) (0) | 2024.01.25 |
[Python] 데이터 전처리&시각화 강의 과제 (1) 전처리 (0) | 2024.01.24 |
[Python 코드카타] 58 ~ 60번 (프로그래머스) (1) | 2024.01.24 |
[Python 코드카타] 55 ~ 57번 (프로그래머스) (1) | 2024.01.23 |