資料分析邏輯整理 餐廳資料

2021-09-25 18:41:00 字數 4735 閱讀 6436

1、先導包

import numpy as np       # 匯入numpy的包

import pandas as pd # 匯入pandas的包

from matplotlib import pyplot as plt

plt.rcparams[

'font.sans-serif']=

['simhei'

] # 支援中文(指定預設字型為simhei 黑體`

2、讀取資料(拿到資料後,了解資料字段資訊,看是否有空值,資料是否有異常,比如是否含有:\r \n 等等)

3、處理資料(用一些方法,處理資料異常,比如連線資料,刪除空值,替換空格等)

# read_excel(資料名)  用pandas讀取資料  此資料裡面有三個sheet_name表,所以都要讀出來

data1 = pd.

read_excel

('meal_order_detail.xlsx'

,sheet_name=

'meal_order_detail1'

)data2 = pd.

read_excel

('meal_order_detail.xlsx'

,sheet_name=

'meal_order_detail2'

)data3 = pd.

read_excel

('meal_order_detail.xlsx'

,sheet_name=

'meal_order_detail3'

)# data1

# concat()連線資料 axis=0 合併行 因為有三個表,所以要連線起來

data = pd.

concat

([data1,data2,data3]

,axis=

0) # 連線資料,建立乙個新的資料

print

(data.

info()

) # 建立好新資料後,檢視資料的資訊

# 刪除空列 axis=

1:合併列 inplace=true:改變資料

data.

dropna

(axis=

1,inplace=true)

data

以上**知識點整理

1、用pandas中的塊【pd.read_副檔名(『檔名.副檔名 『)】讀取資料

2、如果此資料是excel,並且一張簿裡面有多張表,要依次讀取出來,後面加【sheet_name=』 表名』】

3、因為有多張表,所以要用【concat()】方法連線資料。(此例中用該方法把三張表連線起來)

4、【axis=0】合併行(此例需要連線資料,所以合併行);【axis=1】合併列(此例需要刪除空列,所以把空列都合併了)

5、【info()】 方法檢視資料的資訊

6、【dropna()】 方法刪除資料資訊

7、【inplace=true】方法改變資料,一般用於一些改變資料的操作方法之後

正式開始做題

1、計算菜品**平均值

# 據我們觀察,資料的菜品名稱裡面有\n \r,所以要先去除它們

# 接著算平均**會有重複,所以先進行菜品名稱去重

# drop_duplicates()函式去重 subset選中某乙個字段

data_dishes_name = data.drop_duplicates(subset=['dishes_name'])

# 方法一:直接用pandas裡面的mean()函式求平均值

# mean_amounts = data_dishes_name['amounts'].mean() # 對去重後的結果求平均值

# 方法二:用numpy裡面的np的mean方法求平均數

mean_amounts = np.mean(data_dishes_name['amounts']) # 對去重後的結果求平均值

mean_amounts

題意分析

我們的目的是統計菜品的平均**

從這句話中我們得出以下資訊:

1)物件:菜品名稱;2)幹什麼:計算平均**

注意:根據我們觀察,資料的菜品名稱裡面有\n \r,所以要先去除它們;接著算平均**會有重複,所以先進行菜品名稱去重

以上**知識點整理

dishes_count = data['dishes_name'].value_counts()[:10]

dishes_count.plot(kind='bar',legend=true) # legend表示圖例

# dishes_count.plot.bar() # bar表示垂直柱狀圖

# dishes_count.plot.barh() # barh表示水平柱狀圖

題意分析

我們的目的是統計最受歡迎的10道菜

從這句話中,我們得出以下資訊:

1)物件:菜名;2)幹什麼:給菜名計數;3)統計方法:柱狀圖(一般統計數量,用柱狀圖更直觀)

以上**知識點整理

1、取資料字段:【之前定義的新資料變數名[『欄位名』] 】(此例中我們定義的新資料變數名為data,菜名字段為disher_name)

2、計數:.【value_counts()】;

此例中統計前10道菜,所以加個索引【value_counts()[:10]】

3、畫圖:【.plot(kind=『圖的型別』,legend=true)】

(此例中,kind代表圖的型別,legend=true代表圖例)

或【.plot.圖的型別()】()裡面可加title=』 『;legend=』 『;label=』 '等

4、垂直柱狀圖:【bar()】;水平柱狀圖:【barh()】

3、單個訂單中菜品數量最多(top 10)

data_order_id = data['order_id'].value_counts()[:10]   # value_counts是統計次數

# data_order_id.plot.bar() # bar()是垂直柱狀圖

data_order_id.plot.barh() # barh()是水平柱狀圖

題意分析

我們的目的是統計單個訂單中菜品數量最多前10名

從這句話中,我們得出以下資訊:

1)物件:訂單id;2)幹什麼:統計次數

以上**知識點整理

1、【value_counts()】 統計次數,可加索引

2、【plot】繪製影象

3、【bar()】 垂直柱狀圖

4、【barh()】 水平柱狀圖

4、計算單一菜品總價;哪個訂單id點菜份數最多(top:10)

# 總價 = 單價 * 數量

data['total_amounts'] = data['amounts'] * data['counts'] # 計算單一菜品總價

# data[data['counts']>1] # 條件;大於1

datagroup = data[['order_id','counts','amounts','total_amounts']] # 確定資料組 訂單id 數量 單價 總價

data_sort = datagroup.groupby(by='order_id').sum() # 給資料組分組並求和

print(data_sort)

# sort_values()表示按by=''裡面的字段排序

data_sort.sort_values(by='counts',ascending=false,inplace=true) # ascending=false 表示倒序

print(data_sort['counts'][:10]) # 訂單id點菜數量最多前十

data_sort['counts'][:10].plot.bar() # 繪製柱狀圖

題意分析

我們的目的是統計通過計算單一菜品總價,確定哪個訂單點菜最多

從這句話中,我們得到以下資訊:

1)物件:訂單id;2)幹什麼:計算總價,確定份數

以上**知識點整理

1、計算總價:【總價=單價*數量】

2、確定資料組:【兩個[[ ]]巢狀】

3、確定資料組之後分組:【groupby(by=『欄位名』)】 其中,groupby是分組 by=是選定按什麼字段分組

4.求和:【.sum()】

5、排序:【sort_values(by=『欄位名』,ascending=false,inplace=true)】

其中,sort_values是按by選定的字段排序,ascending表示倒序,inplace=true表示改變資料

Python資料分析整理

成都找了份實習工作,之前本來是打算先熟悉下spss的使用,但是公司要分析的基本是百萬左右的資料,於是邊學習邊整理下資料吧。重新把 機器學習實戰 裡面的東西過一遍,和資料基本都是書上的,同時也加了些自己的 python 3.7.6 sklearn 0.0 pandas 1.0.5 matplotlib...

資料分析入門整理(一)

資料分析方法 1 商業智慧型 2 分析 3 資料探勘 資料分析師常用工具 sqlhadoop sa cel rtableau spss 資料分析流程 業務理解 資料分析的七點,最為重要的環節 資料收集 多渠道獲取結構化與非結構化資料 資料處理 資料清洗 資料整理 資料加工 資料分析 現狀 原因分析,...

資料分析SQL問題整理

1.視窗函式 參考文章 2.各種連線方式的區別?inner join 內連線,只有兩個表共有的列值對應的行才能匹配出行資料。left join right join all join 左,右,全 外連線,以left join 為例,如果指定了需要匹配的列名,左表的資料都會提取出來,若右表有符合條件資...