[これがデータ解析WithPython]01です.データ内の内部サイトを検索[1]
19363 ワード
本書は、「これがデータ分析WithPython」の内容を参考にした.
ナビゲーションデータ分析について説明します. Pandas、Numpy、Matplotlibなどのツールを使用して分析することを熟知しています. は、適切な可視化方法でサイトを発見します.
探索的データ分析はデータの情報を把握し,問題解決に必要なヒントを分析する過程である.
rawデータは、実際に接触したデータの大部分であり、分析または精製に使用されていないデータである.
データのソースとトピックについて説明します. データはどこで生成されますか? データはどのように収集されますか? データの名前、コンポーネント、ソース、およびトピックは何ですか. データのサイズについて説明します. ステップは、概ねのデータ量または数 を理解する.データのサイズによっては、特殊な種類のサンプリングも必要です. データの構成要素を表示します. の特性は、データを構成する要素を意味する.
(ex.学生健診データ-身長、体重、視力、聴力など) 身長体重...視力聴力賢雄171571.52...尚允180782.01日恵161540.51
データの実際の内容を探索する過程で,特徴の属性探索と特徴間の相関探索を行う.
クラスの平均身長を計算し、平均値だけでなく、標準偏差、中央値、データの四分位数などの統計値を求めます.これが定量的属性を定義します.
特徴の属性探索過程において,最も重要なのはデータの問題を提起することである.
クラスの肥満度に好奇心を持つと、体重という特徴値が自然に見られます.しかし、「身長」の値も「体重」の値と関係がある.この場合,互いの関係を探索することが必要である.
データ解析では,特徴間の公分散,相関係数などの概念を含む統計的手法により理解できる.
データの可視化は、数値データだけでは把握しにくいパターンやサイトの発見に役立ちます.
サンプルデータのダウンロード
quantityとitem priceの値は連続型featureです.
区分名フィーチャー例数値型フィーチャー連続型フィーチャーある区間のすべての値をデータとして使用できます.身長、体重は非連続型を数えることができ、一定区間にはいくつかの固定値が必要です.年齢カテゴリ型特徴順序のカテゴリ型特徴順序があるが,数値ではない.単位(A,B,C)の順序がないカテゴリ型特徴データは区別されるが,順序がない.血液型
フィーチャーシェイプのタイプテーブル
上記の統計データから平均発注数は1.07であることがわかります.
item price()の数値フィーチャーはobjectタイプなのでdescribe()関数では見ることができません.データの前処理作業で見ることができます.
最も多く注文されたアイテムTOP 10を分析するために、DataFrame["column"]の形状にvalue counts()関数を適用するには、以下の方法を使用します.DataFrame['column']は、value counts()関数がseriesオブジェクトにのみ適用されるため、seriesという名前のオブジェクトを返します.
groupby()関数は、データフレーム内の特定のフィーチャーに基づいてグループを作成し、パケット演算を適用できます.
item priceのタイプは文字列なので統計データは取得できません.このフェーズは、データの前処理方法フェーズです.
本章の核心概念
1-1探索データ分析プロセス
探索的データ分析はデータの情報を把握し,問題解決に必要なヒントを分析する過程である.
raw data
rawデータは、実際に接触したデータの大部分であり、分析または精製に使用されていないデータである.
探索的データ分析プロセス
(ex.学生健診データ-身長、体重、視力、聴力など)
データのプロパティの参照
データの実際の内容を探索する過程で,特徴の属性探索と特徴間の相関探索を行う.
フィーチャーのプロパティの参照
クラスの平均身長を計算し、平均値だけでなく、標準偏差、中央値、データの四分位数などの統計値を求めます.これが定量的属性を定義します.
特徴の属性探索過程において,最も重要なのはデータの問題を提起することである.
フィーチャー間の依存関係の参照
クラスの肥満度に好奇心を持つと、体重という特徴値が自然に見られます.しかし、「身長」の値も「体重」の値と関係がある.この場合,互いの関係を探索することが必要である.
データ解析では,特徴間の公分散,相関係数などの概念を含む統計的手法により理解できる.
ナビゲーションデータの表示
データの可視化は、数値データだけでは把握しにくいパターンやサイトの発見に役立ちます.
1-2メキシコ風チェーン店chipotleの注文データを分析する
サンプルデータのダウンロード
import pandas as pd
file_path = 'python-data-analysis-master/data/chipotle.tsv'
#read_csv()함수로 데이터를 데이터 프레임 형태로 불러온다.
chipo = pd.read_csv(file_path,sep = '\t')
print(chipo.shape)
print("===============================")
print(chipo.info())
chipotleデータセットの基礎情報を出力します.# chipo라는 데이터 프레임에서 순서대로 10개의 데이터를 보여줍니다.
chipo.head(10)
print(chipo.columns)
print("===============================")
print(chipo.index)
quantityとitem priceの値は連続型featureです.
区分名フィーチャー例数値型フィーチャー連続型フィーチャーある区間のすべての値をデータとして使用できます.身長、体重は非連続型を数えることができ、一定区間にはいくつかの固定値が必要です.年齢カテゴリ型特徴順序のカテゴリ型特徴順序があるが,数値ではない.単位(A,B,C)の順序がないカテゴリ型特徴データは区別されるが,順序がない.血液型
フィーチャーシェイプのタイプテーブル
特徴の基礎統計量をdescrib()関数で表示します。
#order_id는 숫자의 의미를 가지지 않기 때문에 str으로 변환합니다.
chipo['order_id'] = chipo['order_id'].astype(str)
print(chipo.describe()) # 수치형 피처들의 기초 통계량을 확인
上記の統計データから平均発注数は1.07であることがわかります.
item price()の数値フィーチャーはobjectタイプなのでdescribe()関数では見ることができません.データの前処理作業で見ることができます.
Unique()関数を使用してカテゴリフィーチャーの数を出力する
print(len(chipo['order_id'].unique()))
print(len(chipo['item_name'].unique()))
실행결과
1834
50
内部サイトの検出:ブラウズとビジュアル化
一番多く注文したものの上位10位
最も多く注文されたアイテムTOP 10を分析するために、DataFrame["column"]の形状にvalue counts()関数を適用するには、以下の方法を使用します.DataFrame['column']は、value counts()関数がseriesオブジェクトにのみ適用されるため、seriesという名前のオブジェクトを返します.
#가장 많이 주문한 아이템 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')['quantity'].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: quantity, 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
ビジュアル化
item_name_list = item_quantity.index.tolist()
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()
データプリプロセッシング:プリプロセッシング関数の使用
item priceのタイプは文字列なので統計データは取得できません.このフェーズは、データの前処理方法フェーズです.
# column 단위 데이터에 apply() 함수로 전처리하기
chipo['item_price'] = chipo['item_price'].apply(lambda x: float(x[1:]))
chipo.describe()
실행결과
quantity item_price
count 4622.000000 4622.000000
mean 1.075725 7.464336
std 0.410186 4.245557
min 1.000000 1.090000
25% 1.000000 3.390000
50% 1.000000 8.750000
75% 1.000000 9.250000
max 15.000000 44.250000
apply()関数は、シリーズユニット演算を処理する機能を実行します.探索性分析:20の手がかりで概念性探索を分析する
受注ごとの平均計算金額出力
chipo.groupby('order_id')['item_price'].sum().mean()
실행결과
18.811428571428568
オーダーごとに10ドル以上のオーダー番号出力を支払う
chipo_orderid_group = chipo.groupby('order_id').sum()
result = chipo_orderid_group[chipo_orderid_group.item_price >= 10]
print(result)
# 결과에서 2,3,4 는 int 형이 아닌 str이기 때문에 뒤로 밀려남
실행결과
quantity item_price
order_id
1 4 11.56
10 2 13.20
100 2 10.08
1000 2 20.50
1001 2 10.08
... ... ...
995 3 24.95
996 4 43.00
997 2 22.50
998 2 10.88
999 5 29.25
[1834 rows x 2 columns]
品物ごとの価格を得る
chipo_one_item = chipo[chipo.quantity == 1]
price_per_item = chipo_one_item.groupby('item_name').min()
price_per_item.sort_values(by = "item_price", ascending = True)[:10]
실행결과
order_id quantitle choice_description item_price
item_name
Bottled Water 1009 1 NaN 1.09
Canned Soda 100 1 [Coca Cola] 1.09
Canned Soft Drink 1003 1 [Coke] 1.25
Side of Chips 1002 1 NaN 1.69
Chips 1005 1 NaN 1.99
Chips and Fresh Tomato Salsa 1 1 NaN 2.29
Chips and Tomatillo-Red Chili Salsa 1215 1 NaN 2.39
Chips and Tomatillo-Green Chili Salsa 1 1 NaN 2.39
Chips and Roasted Chili-Corn Salsa 1156 1 NaN 2.39
Chips and Tomatillo Red Chili Salsa 1020 1 NaN 2.95
sort values()関数のパラメータ昇順がfalseの場合は降順です.item_name_list = price_per_item.index.tolist()
x_pos = np.arange(len(item_name_list))
item_price = price_per_item['item_price'].tolist()
# 상품 가격 분포 그래프
plt.bar(x_pos, item_price, align='center')
plt.ylabel("item_price($)")
plt.title("Distribution of item price")
plt.show()
# 상품 가격 히스토그램
plt.hist(item_price)
plt.ylabel("count")
plt.title("Histogram of item price")
plt.show()
Reference
この問題について([これがデータ解析WithPython]01です.データ内の内部サイトを検索[1]), 我々は、より多くの情報をここで見つけました https://velog.io/@xodn127/이것이-데이터분석이다-With-Python-01.데이터에서-인사이트-발견하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol