[Python] 전처리 3주차 숙제

김희정·2024년 1월 25일

flights 데이터셋

Q1. 연도별 총 승객수

코드

# 1. 연도별 총 승객 수
passenger_year = flights_data[['year', 'passengers']].groupby('year').sum()
passenger_year

plt.plot(flights_data.groupby('year')['passengers'].sum(), marker='o')
plt.title('연도별 총 승객 수')
plt.xlabel('Year')
plt.ylabel('Total Passengers')
plt.grid(True)
plt.show()

Q2. 연도별 평균 승객 수

코드

# 2. 연도별 평균 승객 수
passenger_year_avg = flights_data[['year', 'passengers']].groupby('year').mean()
passenger_year_avg

plt.bar(flights_data['year'].unique(), flights_data.groupby('year')['passengers'].mean())
plt.title('연도별 평균 승객 수')
plt.xlabel('Year')
plt.ylabel('Avg Passengers')
plt.show()

Q3. 승객 수 분포

코드

# 3. 승객 수 분포

plt.hist(flights_data['passengers'], bins=20, edgecolor='black')
# passenger_year.hist(bins=50, color='skyblue')
plt.xlabel('Passengers')
plt.ylabel('Frequency')
plt.title('승객 수 분포')
plt.show()

Q4. 연도별 승객 수와 월간 승객 수

코드

# Scatter plot: 연도별 승객 수와 월간 승객 수
plt.figure(figsize=(10, 6))
for month in flights_data['month'].unique():
    plt.scatter(flights_data[flights_data['month'] == month]['year'], # x축
                flights_data[flights_data['month'] == month]['passengers'], # y축
                label=month, alpha=0.7)
plt.title('Passengers per Year by Month')
plt.xlabel('Year')
plt.ylabel('Passengers')
plt.legend()
plt.show()
  • flights_data['month'] == month 는 데이터프레임에서 month 열의 각 원소에 대해 비교 수행
  • 비교 결과는 각 원소가 주어진 month 값과 동일한지 아닌지(True/False)를 나타내는 불리언 반환
  • for month in flights_data['month'].unique(): 를 통해 각 월에 대한 루프를 돌면서, 각 월에 해당하는 행들을 추출

Q5. 월별 승객 수 분포

코드

# Box plox : 월별 승객 수 분포

plt.boxplot([flights_data[flights_data['month']== month]['passengers'] for month in flights_data['month'].unique()],
             labels=flights_data['month'].unique())
plt.title('월별 승객 수 분포')
plt.xlabel('Month')
plt.ylabel('Passengers')
plt.show()

tips 데이터셋

Q1. 요일별 팁 금액의 평균

코드

# 1. 요일별 팁 금액의 평균

tips_date = tips_data.groupby('day')['tip'].mean()
plt.plot(tips_date.index, tips_date.values, marker='o', color='blue')
plt.grid(True)
plt.title('Average Tips by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Average Tip Amount')
plt.show()

Q2. 요일별 총 팁 금액

코드

# Bar plot: 요일별 총 팁 금액
plt.figure(figsize=(8, 6))
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')

Q3. 식사 금액 분포

코드

# 3. 식사 금액 분포

plt.hist(tips_data['total_bill'], bins=15)
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill Amount')
plt.ylabel('Frequency')
plt.show()

Q4. 식사 금액과 팁 금액의 관계

코드

# 4. 식사 금액과 팁 금액의 관계 

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

Q5. 요일별 식사 금액 분포

코드

# 5. 요일별 식사 금액 분포

sns.boxplot(x='day', y='total_bill', data=tips_data, palette='Set3')
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day of the Week')
plt.ylabel('Total Bill Amount')
plt.show()

profile
데이터 애널리스트가 되고 싶은

0개의 댓글