SECTION 01 데이터분석 (1)
데이터셋의 기초 정보 출력하기
데이터 불러오기 위해서 read_csv() 함수 사용
'..'라는 경로는 상위폴더를 의미# pandas 모듈 임포트 import pandas as pd # read_csv() 함수로 데이터를 Dataframe 형태로 불러옵니다. # pd.read_csv("파일경로를 포함한 파일명", sep="구분자") # raw data를 상대 경로로 불러오기 file_path = '../1208data/chipotle.tsv' chipo = pd.read_csv(file_path, sep='\t') print(chipo.shape) print("------------------------------") print(chipo.info())
실행결과 (4622, 5) ------------------------------ <class 'pandas.core.frame.DataFrame'> RangeIndex: 4622 entries, 0 to 4621 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 order_id 4622 non-null int64 1 quantity 4622 non-null int64 2 item_name 4622 non-null #object 3 choice_description 3376 non-null #object 4 item_price 4622 non-null #object dtypes: int64(2), object(3) memory usage: 180.7+ KB None
shape는 데이터의 행과 열의 크기를 반환
info()는 행과 열의 구성 정보
Chipotle 데이터의 행과열, 데이터 확인
# chipo라는 데이터 프레임에서 순서대로 10개의 데이터를 보여줍니다. chipo.head(10) print(chipo.columns) print("-------------------------------") print(chipo.index)
실행결과 Index(['order_id', 'quantity', 'item_name', 'choice_description', 'item_price'], dtype='object') -------------------------------- RangeIndex(start=0, stop=4622, step=1)
head(10) 함수는 첫 10개의 데이터를 테이블 형태로 출력
columns(행의목록), index(열의목록)를 호출하면 데이터의 행과 열에 대한 정보를 함께 출력
- order_id : 주문번호
- quantity : 아이템의 주문 수량
- item_name : 주문한 아이템의 이름
- choice_description : 주문한 아이템의 상세 선택 옵션
- item_price : 주문 아이템의 가격 정보
quantity와 item_price의 수치적 특징
quantity 와 item_price 이 두 피처는 연속형 피처
연속형 피처는 키와 몸무게처럼 어떠한 값도 가질수 있는 연속적인 숫자형태
다음 코드의 출력 결과는 describe() 함수가 나타낸 피처의 기초 통계량
하지만 현재 유일하게 존재하는 피처는 quantity뿐이기 때문에, quantity에 대한 정보만을 출력#order_id는 숫자의 의미를 가지지 않기 때문에 str으로 변환합니다. chipo['order_id'] = chipo['order_id'].astype(str) print(chipo.describe()) # chipo 데이터 프레임에서 수치형 피처들의 기초 통계량을 확인합니다.
실행결과 quantity count 4622.000000 mean 1.075725 std 0.410186 min 1.000000 25% 1.000000 50% 1.000000 75% 1.000000 max 15.000000
order-id와 item_name의 개수
order_id와 item_name 이 두 피처는 범주형 피처이기 때문에
unique() 함수를 사용. 이를 통해 피처 내에 몇개의 범주가 있는지 확인#unique()함수로 범주형 피처의 개수 출력하기 print(len(chipo['order_id'].unique())) # order_id의 개수를 출력합니다. print(len(chipo['item_name'].unique()))
실행결과 1834 50
가장 많이 주문한 아이템 Top 10
분석하기 위해 DataFrame['column']의 형태에 value_counts() 함수를 적용하는 방식 사용
DataFrame['column']은 시리즈 라는 객체를 반환하는데,
value_counts() 함수는 오로지 이러한 시리즈 객체에만 적용되기 때문#가장 많이 주문한 아이템 top 10 출력하기 item_count = chipo['item_name'].value_counts()[:10] for idx, (val, cnt) in enumerate(item_count.iteritems(),1): print("Top", idx, ":", val, cnt)
실행결과 Top 1 : Chicken Bowl 726 Top 2 : Chicken Burrito 553 Top 3 : Chips and Guacamole 479 Top 4 : Steak Burrito 368 Top 5 : Canned Soft Drink 301 Top 6 : Steak Bowl 211 Top 7 : Chips 211 Top 8 : Bottled Water 162 Top 9 : Chicken Soft Tacos 115 Top 10 : Chips and Fresh Tomato Salsa 110
아이템별 주문 개수와 총량
판다스의 groupby()함수는 데이터 프레임에서 특정 피처를 기준으로 그룹을 생성
이를 통해 그룹별 연산을 적용가능
아이템별 주문 개수와 총량 구하기#아이템별 주문 개수를 출력합니다 order_count = chipo.groupby('item_name')['order_id'].count() order_count[:10] #아이템별 주문 개수를 출력합니다.
실행결과 item_name 6 Pack Soft Drink 54 Barbacoa Bowl 66 Barbacoa Burrito 91 Barbacoa Crispy Tacos 11 Barbacoa Salad Bowl 10 Barbacoa Soft Tacos 25 Bottled Water 162 Bowl 2 Burrito 6 Canned Soda 104 Name: order_id, dtype: int64
#아이템별 주문 총량을 출력합니다 item_quantity = chipo.groupby('item_name')['quantity'].sum() item_quantity[:10]
실행결과 item_name 6 Pack Soft Drink 55 Barbacoa Bowl 66 Barbacoa Burrito 91 Barbacoa Crispy Tacos 12 Barbacoa Salad Bowl 10 Barbacoa Soft Tacos 25 Bottled Water 211 Bowl 4 Burrito 6 Canned Soda 126 Name: quantity, dtype: int64
시각화
tolist()와 넘파이의 arange()함수를 이용해 x_pos를 선언, 0~50까지 숫자를 그래프의 x축으로 사용
y값(order_cnt)에는 주문 총량에 해당하는 값인 item_quantity.values.tolist()를 넣어줌%matplotlib inline import numpy as np import matplotlib.pyplot as plt #아이템별 주문의 총량을 막대 그래프로 시각화 item_name_list = item_quantity.index.tolist() #numpy.arange(시작, 끝, 간격)으로 배열 만들기 x_pos = np.arange(len(item_name_list)) order_cnt = item_quantity.values.tolist() # plt.bar(x_pos, order_cnt, align='center') plt.ylabel('ordered_item_count') plt.title('Distribution of all orderd item') # plt.show()
Author And Source
이 문제에 관하여(SECTION 01 데이터분석 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hio2011/SECTION-1-2-데이터분석저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)