SECTION 01データ分析(1)
13509 ワード
データセットの基本情報を出力
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(列のリスト)を呼び出すことで、データ行と列に関する情報を同時に出力できます.
数量とitem priceの数値フィーチャー
quantityとitem priceの2つの特徴は連続型の特徴です
連続的特徴は、身長や体重などの任意の値を有する連続的な数値形式である.
次のコードの出力結果はdescribe()関数が表す特徴の基礎統計です.
しかし、現在唯一存在する特徴は数量であるため、数量に関する情報のみが出力される.
#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の2つの特徴はカテゴリ特徴である.
ユニーク()関数を使用します.これにより、フィーチャーにいくつかのカテゴリが確保されます.
#unique()함수로 범주형 피처의 개수 출력하기
print(len(chipo['order_id'].unique())) # order_id의 개수를 출력합니다.
print(len(chipo['item_name'].unique()))
실행결과
1834
50
一番多く注文したものの上位10位
value counts()関数を用いてDataFrame['column']の形状を解析する
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
物品ごとの注文数量と総量
Pandasの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()とnumberfiの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()
Reference
この問題について(SECTION 01データ分析(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@hio2011/SECTION-1-2-데이터분석テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol