📌 데이터 시각화 실습
📌 flights 데이터셋 활용 시각화
import seaborn as sns
import matplotlib.pyplot as plt
flights_data = sns.load_dataset('flights')
flights_data
📌 연도별 총 승객 수
plt.plot(flights_data.groupby('year')['passengers'].sum())
plt.title('연도별 총 승객 수')
plt.xlabel('연도')
plt.ylabel('총 승객 수')
plt.show()
plt.figure(figsize=(6, 4))
plt.plot(flights_data.groupby('year')['passengers'].sum(), marker='o')
plt.title('Total Passengers per Year')
plt.xlabel('Year')
plt.ylabel('Total Passengers')
plt.grid(True)
plt.show()
📌 연도별 평균 승객 수
plt.plot(flights_data.groupby('year')['passengers'].mean())
plt.title('연도별 평균 승객 수')
plt.xlabel('연도')
plt.ylabel('평균 승객 수')
plt.show()
plt.figure(figsize=(6, 4))
plt.bar(flights_data['year'].unique(), flights_data.groupby('year')['passengers'].mean())
plt.title('Average Passengers per Year')
plt.xlabel('Year')
plt.ylabel('Average Passengers')
plt.show()
📌 승객 수 분포
plt.hist(flights_data['passengers'], bins=30)
plt.title('승객 수 분포')
plt.xlabel('승객 수')
plt.ylabel('분포')
plt.show()
plt.figure(figsize=(6, 4))
plt.hist(flights_data['passengers'], bins=20, edgecolor='black')
plt.title('Passengers Distribution')
plt.xlabel('Passengers')
plt.ylabel('Frequency')
plt.show()
📌 연도별 승객 수와 월간 승객 수
plt.scatter(flights_data.groupby('year')['passengers'].sum(), flights_data.groupby('month')['passengers'].sum())
plt.title('연도별 승객 수와 월간 승객 수')
plt.xlabel('연도별 승객 수')
plt.ylabel('연간 승객 수')
plt.show()
plt.figure(figsize=(6, 4))
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()
📌 월별 승객 수 분포
plt.bar(flights_data['month'].unique(), flights_data.groupby('month')['passengers'].sum())
plt.title('월별 승객 수 분포')
plt.xlabel('월')
plt.ylabel('승객 수')
plt.show()
plt.figure(figsize=(6, 4))
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('Passengers')
plt.show()
📌 tips 데이터셋 활용 시각화
import seaborn as sns
import matplotlib.pyplot as plt
tips_data = sns.load_dataset('tips')
tips_data
📌 요일별 팁 금액의 평균
- 제목 : Average Tips by Day
- X축 : Day of the Week
- Y축 : Average Tip Amount
plt.bar(tips_data['day'].unique(), tips_data.groupby('day')['tip'].mean())
plt.title('Average Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Average Tip Amount')
plt.show()
plt.figure(figsize=(6, 4))
tips_day = tips_data.groupby('day')['tip'].mean()
plt.plot(tips_day.index, tips_day.values, marker='o', linestyle='-', color='green')
plt.title('Average Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Average Tip Amount')
plt.grid(True)
- 값 자체가 다르게 나왔다.
X축에 요일별 인덱스를 넣고 Y축에 요일별 값을 넣어 선 그래프로 시각화.
확인..
📌 요일별 총 팁 금액
- 제목 : Total Tips by Day
- X축 : Day of the Week
- Y축 : Total Tip Amount
plt.bar(tips_data['day'].unique(), tips_data.groupby('day')['tip'].sum())
plt.title('Total Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Tip Amount')
plt.show()
plt.figure(figsize=(6, 4))
total_tips = tips_data.groupby('day')['tip'].sum()
plt.bar(total_tips.index, total_tips.values, color='skyblue')
plt.title('Total Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Tip Amount')
- 그림은 똑같이 나왔으나,
X축의 날짜 순서가 반대로 나왔다.
index를 통해 X축에 넣어줘야 되는 것 같다!
📌 식사 금액 분포
- 제목 : Distribution of Total Bill
- X축 : Total Bill Amount
- Y축 : Frequency
plt.hist(tips_data['total_bill'], bins = 30)
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Frequency')
plt.show()
plt.figure(figsize=(6, 4))
plt.hist(tips_data['total_bill'], bins=15, edgecolor='black', alpha=0.7)
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Frequency')
📌 식사 금액과 팁 금액의 관계
- 제목 : Tip Amount vs Total Bill
- X축 : Total Bill Amount
- Y축 : Tip Amount
plt.scatter(tips_data['total_bill'], tips_data['tip'])
plt.title('Tip Amount vs Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Tip Amount')
plt.show()
plt.figure(figsize=(6, 4))
plt.scatter(tips_data['total_bill'], tips_data['tip'], color='orange', alpha=0.7)
plt.title('Tip Amount vs Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Tip Amount')
📌 요일별 식사 금액 분포
- 제목 : Total Bill Distribution by Day
- X축 : Day of the Week
- Y축 : Total Bill Amount
bills = tips_data.groupby('day')['total_bill'].sum()
plt.bar(bills.index, bills.values)
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Bill Amount')
plt.show()
plt.figure(figsize=(6, 4))
sns.boxplot(x='day', y='total_bill', data=tips_data, palette='Set1')
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Bill Amount')
plt.legend(['Line Plot'], loc='upper right')
plt.text(3, 3, 'Sample Text', fontsize=12)
plt.show()
- 바 그래프에 인덱스를 써봤는데..
요일마다의 금액 분포를 보기 위함이니까 박스플롯을 쓰는구나.