Python商務(wù)與經(jīng)濟(jì)統(tǒng)計學(xué)-1

案例2-1、3-1 Pelican 商店

本案例之中主要涉及到Pandas和pyecharts的一些功能,比如利用pandas進(jìn)行數(shù)據(jù)篩選,百分比頻數(shù)統(tǒng)計,將數(shù)據(jù)進(jìn)行分組,分組統(tǒng)計,相關(guān)性分析等。另外還涉及到了pyecharts的餅圖,直方圖,散點(diǎn)圖的繪制。

讀入數(shù)據(jù)

import pandas as pd
import numpy as np
data = pd.read_csv("PelicanStores.csv")
data = data.iloc[:,:8]#過濾數(shù)據(jù)選擇前8列
data.head()#看一下前五行

問題1 主要變量的百分?jǐn)?shù)頻數(shù)分布

#Items(購買商品的總件數(shù))百分?jǐn)?shù)頻數(shù)分布
Items_percent_frequency_distribution = (pd.value_counts(data["Items"])/np.size(data["Items"]))*100
Items_percent_frequency_distribution
#Net Sales(凈銷售額)百分?jǐn)?shù)頻數(shù)分布
bins = [0, 50, 100, 150, 200, 250, 300]
data["Net Sales Group"] = pd.cut(data["Net Sales"], bins, right=False)#對數(shù)據(jù)進(jìn)行分組
Net_Sales_percent_frequency_distribution = (pd.value_counts(data["Net Sales Group"])/np.size(data["Net Sales Group"]))*100
Net_Sales_percent_frequency_distribution
#Age(年齡)百分?jǐn)?shù)頻數(shù)分布
bins = [20, 30, 40, 50, 60, 70, 80]
data["Age_Group"] = pd.cut(data["Age"], bins, right=False)
Age_percent_frequency_distribution = (pd.value_counts(data["Age_Group"])/np.size(data["Age_Group"]))*100
Age_percent_frequency_distribution

問題2:條形圖或餅形圖,以顯示顧客使用各種付款方式的購物數(shù)量

#購物數(shù)量有兩個維度,購買商品的總件數(shù)和銷售額
M_P_Items_Net_Sales = data.groupby(by=["Method of Payment"])["Items","Net Sales"].agg({"Items":np.sum,"Net Sales":np.sum})
M_P_Items_Net_Sales = M_P_Items_Net_Sales.sort_values(by="Net Sales",ascending=False)
M_P_Items_Net_Sales
#條形圖
from pyecharts import Bar, Grid
x_line = [i for i in M_P_Items_Net_Sales.index.format()]
y_line_Items = [i[0] for i in M_P_Items_Net_Sales.values]
y_line_NS = [i[1] for i in M_P_Items_Net_Sales.values]
bar1 = Bar("Items",title_text_size=26, title_top=10, title_pos=10, 
          width=1000, height=400, background_color="rgb(255,255,255)")
bar1.add("", x_line, y_line_Items ,xaxis_label_textsize=12,bar_category_gap='20%')
bar2 = Bar("Net Sales",title_text_size=26, title_top=300, title_pos=10, 
          width=1000, height=400, background_color="rgb(255,255,255)")
bar2.add("", x_line, y_line_NS ,xaxis_label_textsize=12,bar_category_gap='20%')
grid = Grid(height=600, width=1000)
grid.add(bar1, grid_bottom="60%")
grid.add(bar2, grid_top="60%")
grid
#餅圖
from pyecharts import Pie
pie1 = Pie("Items", title_text_size=26, title_top=10, title_pos=10)
pie1.add("", x_line, y_line_Items, is_label_show=True, is_legend_show=False, label_text_size=10,
         center=[30,50], radius=[0,45])
pie2 = Pie("Net Sales", title_text_size=26, title_top=10, title_pos=500)
pie2.add("", x_line, y_line_NS, is_label_show=True, is_legend_show=False, label_text_size=10,legend_orient='vertical',
         center=[70,50], radius=[0,45])
grid = Grid(height=600, width=1000)
grid.add(pie1, grid_left="60%")
grid.add(pie2, grid_right="60%")
grid

問題3:顧客類型(普通或促銷)與凈銷售額的交叉分組表,對相似性與差異性進(jìn)行評價

data_CN_table = data.pivot_table(values=["Net Sales"], index=["Age_Group"], columns=["Type of Customer"], aggfunc=[np.sum], fill_value=0)
data_CN_table

①促銷所產(chǎn)生的凈銷售額在20至70歲這個區(qū)間是比普通顧客要多一些的,其中以50到60歲這個區(qū)間較為明顯。
②40到50歲,50到60歲這兩個年齡區(qū)間的人促銷所產(chǎn)生的凈銷售額相近。
③超過30歲的人,隨著年齡的增加,消費(fèi)能力是一直下降的。
④50到70歲的人更傾向只在促銷的時候購買商品。

問題4 探索凈銷售額與顧客年齡關(guān)系的散點(diǎn)圖

from pyecharts import Scatter
data_NS_Age = data[["Net Sales", "Age"]]
x_line_age = [i[1] for i in data_NS_Age.values]
y_line_NS = [i[0] for i in data_NS_Age.values]
scatter = Scatter()
scatter.add("", x_line_age, y_line_NS)

問題5 凈銷售額的描述統(tǒng)計量和顧客的各種不同分類的凈銷售額的描述統(tǒng)計量

data["Net Sales"].describe()#凈銷售額的描述統(tǒng)計量
data.groupby(["Type of Customer"])["Net Sales"].describe() #分組進(jìn)行統(tǒng)計描述

問題6 關(guān)于年齡與凈銷售額之間關(guān)系的描述統(tǒng)計量

#相關(guān)性分析
data_NS_Age.corr()

年齡與凈銷售額之間有一個負(fù)的相關(guān)關(guān)系,證明年齡越大可能所消費(fèi)的金額更小。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容