Mini_Project_1

임성진·2024년 1월 25일
0

Mini Project

목록 보기
1/4


이 시리즈에서는 수업 시간에 과제로 나왔던 미니 프로젝트들에 대해서 기록하는 공간을 가지도록 할 예정이다.

레스토랑(chipole.csv) 데이터 분석

  1. tsv 파일 읽어 들어와서 정보 확인
    • 기존까지 진행하던 csv가 아닌 tsv 형태의 파일이므로 sep='\t'을 사용해서 읽어와야 한다
import pandas as pd

df = pd.read_csv("/content/drive/MyDrive/AI 스쿨 파일/데이터 분석/chipotle.tsv", sep="\t")
df.info()
df.head()


2. 데이터 전처리 진행

  • 결측치 처리, 필요없는 컬럼(choice_description) 제거, item_price 컬럼의 $ 표시 제거 및 dtype 정수형으로 변경
  • '$' 처리는 replace를 사용
df.isnull().sum()
df.drop('choice_description', axis=1, inplace=True)
df['item_price'] = df['item_price'].str.replace('$', '')
df['item_price'] = pd.to_numeric(df['item_price'])
  1. 가장 인기 있는 메뉴 top 10
import pandas as pd

df = pd.read_csv("/content/drive/MyDrive/AI 스쿨 파일/데이터 분석/chipotle.tsv", sep="\t")
df.info()
df.isnull().sum()
df.head()
df.drop('choice_description', axis=1, inplace=True)
df['item_price'] = df['item_price'].str.replace('$', '')
df['item_price'] = pd.to_numeric(df['item_price'])

df1 = df.groupby('item_name').sum()
df1.head(10)

  • 시각화
df1['quantity'].nlargest(10).plot.barh()

import matplotlib.pyplot as plt
plt.title('The popular menu top 10')
plt.rc('font', family='AppleGothic')
plt.xlabel('총 주문건수')
plt.ylabel('메뉴명')

  1. 가장 매출이 높은 메뉴 top 10
df1 = df.groupby('item_name').sum()
df1.head()

  • 시각화
df1['item_price'].nlargest(10).plot.barh()
plt.rc('font', family='AppleGothic')
plt.title('The profitable menu top10')
plt.xlabel('총 매출 금액')
plt.ylabel('메뉴명')

  1. 메뉴의 인기(주문 수)와 총 매출 사이의 상관관계
df1.plot(x= 'quantity', y= 'item_price', kind='scatter') 
plt.rc('font', family='AppleGothic')
plt.title('메뉴의 인기와 매출의 상관관계')
plt.xlabel('메뉴별 주문수')
plt.ylabel('메뉴별 총 매출')
plt.show()


df1[['quantity', 'item_price']].corr()

  1. 주문별 매출액 추이
df2 = df.groupby('order_id').sum()
df2.head()

  • 상위 20개 시각화
df2['item_price'].nlargest(20).plot.bar(rot=45)

plt.rc('font', family='AppleGothic')
plt.title('매출 상위 20 주문번호')
plt.xlabel('주문 번호')
plt.ylabel('매출액')

  • 주문당 매출액 분포
df2['item_price'].plot.box(showfliers=False)

import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
plt.title('주문당 매출액 분포')

df2['item_price'].plot.line()

  1. 주문 당 주문메뉴 개수
df2 = df.groupby('order_id').sum()
df2.head()

  • 1회 주문 시, 주문 메뉴 개수 시각화
df3 = df2.value_counts('quantity')
df3.head()


df3.nlargest(7).plot.pie(autopct='%.1f%%', figsize=(10,10))

import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
plt.title('1회 주문 시 주문 메뉴 개수')

0개의 댓글