文章目錄
- 0 專案簡介
- 任務 1資料匯入與預處理
- 任務 1.1 探查資料質量并進行缺失值和例外值處理
- 1.1.2檢查重復值
- 1.1.3資料內容總覽
- 1.1.4資料分布總覽
- 1.1.5消費金額和消費次數觀察消費金額和消費次數的散點圖
- 1.1.6觀察 CardCount 特征的分布情況
- 任務2 食堂就餐行為分析
- 任務 2.2 食堂刷卡記錄
- 任務 2.3 根據上述分析的結果,為食堂的運營提供建議,
- 任務 3學生消費行為分析
- 任務 3.1 分析不同專業間不同性別學生群體的消費特點,
- 3.3.1 本月人均刷卡頻次和人均消費額
- 3.3.2 選擇 3 個專業,分析不同專業間不同性別學生群體的消費特點
- 任務 3.2 分析每一類學生群體的消費特點,
- 3.2.1 概述
- 3.2.4 聚類結果分析
- 任務 3.3 助學金評定
- 4 關鍵代碼
- 🚩 6 最后-畢設幫助 📢📢📢📣📣📣
0 專案簡介
今天學長向大家介紹一個資料分析專案
基于機器學習的營銷資料分析 - 銀行營銷資料分析
畢設幫助,開題指導,技術解答
🇶746876041
基于國內某高校校園一卡通系統一個月的運行資料,使用資料分析和建模的方法,挖掘資料中所蘊含的資訊,分析學生在校園內的學習生活行為
任務 1資料匯入與預處理
任務 1.1 探查資料質量并進行缺失值和例外值處理
1.1.1資料結構總覽查看資料集項數,發現資料集data1.csv,有4341項,5列;資料集data2.csv,有519367 項,14列;資料集data3.csv,有43156項,6列
1.1.2檢查重復值
通過去重操作發現三個資料集均無重復項
1.1.3資料內容總覽
查看資料資訊info(),發現data1和data3中均無缺失值 ,data2中termSerNo、conOperNo 存在較大量的缺失值,因為這兩項資料對后續分析無影響故直接過濾
1.1.4資料分布總覽
通過對資料Describe,查看資料的均值,最大值,最小值以及方差等資料特征,觀察到data1
和data3中的特征值均較為合理,data2中的Money、FundMoney、Surplus以及 CardCount,均存在和樣本群體偏離程度較大的資料,會影響后序模型的性能
1.1.5消費金額和消費次數觀察消費金額和消費次數的散點圖
發現資料中具有一定數量的離群點,將其過濾

1.1.6觀察 CardCount 特征的分布情況
通過 distplot 和 kdeplot 繪制柱狀圖觀察 CardCount 特征的分布情況,屬于長尾型別的分布,這說明了有很多消費次數過多且超出正常范圍,

任務2 食堂就餐行為分析
任務 2.1 繪制各食堂就餐人次的占比餅圖,分析學生早中晚餐的就餐地點,是否有顯著差別


根據圖 1,綜合早、午、晚三餐學生的就餐地點來看,34.44%的學生更偏愛去第二食堂,
26.16%的學生偏愛去第五食堂,第一、三、四食堂在學生的偏愛程度中屬于一般水平,而只有 0.46%的學生在教師食堂就餐,
根據圖 2,圖 3,圖 4 三圖分析,學生對食堂的偏愛程度前三的食堂是:早餐:第二食堂 > 第五食堂 > 第一食堂午餐:第二食堂 > 第五食堂 > 第四食堂晚餐:第二食堂 > 第五食堂 > 第四食堂而學生用餐次數少的食堂(以用餐次數是否超過 10%為分界點)分別有:早餐:第四食堂、第三食堂、教師食堂午餐:教師食堂晚餐:教師食堂
綜上,學生午晚兩餐的用餐地點與綜合三餐用餐地點分析比較,不存在顯著差別;而學生的早餐用餐地點,選擇第三、四食堂的占極少數,與綜合三餐用餐地點有較為顯著的差別,
任務 2.2 食堂刷卡記錄
分別繪制作業日和非作業日食堂就餐時間曲線圖,分析食堂早中晚餐的就餐峰值

從上圖可以看出,作業日的就餐峰值均高于非作業日,作業日食堂早餐的就餐峰值為 60000次,非作業日為15000次;作業日食堂午餐的就餐峰值為90000次,非作業日為30000 次;作業日食堂晚餐的就餐峰值為17000次,非作業日為41000次,
出現該現象的主要原因在于作業日學生需要外出上課,直接前往食堂就餐的可能性更高,而非作業日學生由于直接在宿舍點外賣或者外出游玩就餐等原因導致前往食堂就餐的人數大幅減少,因此作業日食堂就餐峰值高于非作業日就餐峰值,
任務 2.3 根據上述分析的結果,為食堂的運營提供建議,
學校方面,應該根據學生的喜好程度合理安排食堂的場地、資金分配等資源,由2.1 可知,大部分學生偏愛去第二食堂和第五食堂,因此學校應給予第二食堂和第五食堂資源傾斜,
食堂方面,受偏愛的第二食堂和第五食堂應該進行菜品創新,形成顧客粘性,并且因為就餐學生多,食堂更應該合理安排食堂內的排隊位置,提高排隊效率,而就餐學生數偏少的第一、三、四食堂應該找出自身原因,采取例如提高食堂環境質量、增加菜品種類或提出促銷活動等方法吸引學生群體,
此外,每個食堂在就餐峰值(分別為7點、11點、17點左右)應加大食堂人手,合理安排排隊場所,提高排隊效率,避免打飯效率低下,并且應在這三個高峰時間段內增加菜品供應量,避免供不應求,而在非高峰期,食堂可以適當減少菜品供應和食堂作業人員數量,從而減少食堂無用的運營成本,
任務 3學生消費行為分析
任務 3.1 分析不同專業間不同性別學生群體的消費特點,
3.3.1 本月人均刷卡頻次和人均消費額
根據程式計算結果得出:本月人均消費頻次為:72.74118014361537次本月人均消費額為:288.7773899469248元
考慮資料合理性,得出:本月人均消費頻次越為:73次;本月人均消費額288.8元
3.3.2 選擇 3 個專業,分析不同專業間不同性別學生群體的消費特點
3.3.2.1根據程式運行結果得出學生消費總額、消費次數總數、校園卡中余額的資料特征圖



3.3.2.2根據程式運行結果得出學生消費總額、消費次數總數、校園卡中余額的柱狀圖



從上圖和上表可以得到不同專業的學生,計算機應用專業學生消費最頻繁,國際金融專業學生單次消費金額最高,藝術設計專業學生卡內盈余最低,而不同專業的學生卡內盈余相差不大,出現該差異的可能原因在于計算機應用專業需要運用到電腦等電子設備,導致購買頻繁,國際金融專業消費金額高可能是其運用專業知識賺錢所需,藝術設計專業學生卡內盈余最低可能是由于其日常在服裝等上面的開銷較大,
此外,我們可以得到不同專業間不同性別學生群體的消費特點,
首先是國際金融專業的學生,該專業女生消費頻繁,男生單次消費金額高,卡內盈余金額近似,其次是藝術設計專業的學生,該專業女生消費頻繁,男生單次消費金額高,男生卡內盈余金額高于女生,最后是計算機應用專業的學生,該專業男生消費頻繁、單次消費金額高,并且男生盈余金額高于女生,
通過分析,出現性別上消費特點差異主要是由于男女性格原因,女生更偏好高頻低費用的購買,享受消費的程序,因此消費次數多,每次都只是購買小額商品,而男生更偏好于低頻高費用的購買,消費目的性強,雖不經常消費,但每次總是會消費較大額度,
任務 3.2 分析每一類學生群體的消費特點,
3.2.1 概述
為了將學生的整體校園消費行為進行分類,選擇了當月消費總金額,消費次數,卡記憶體款作為特征進行聚類,采用的聚類演算法為 k-means 演算法(k-均值聚類演算法)
3.2.2 k-means 演算法簡介
k-means 演算法(k-均值聚類演算法)是一種基本的已知聚類類別數的劃分演算法,它是很典型的基于距離的聚類演算法,采用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大,該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標,它可以處理大資料集,且高效,它的輸入自然是資料集和類別數,聚類結果是劃分為 k 類的 k 個資料集,
3.2.3 程序
將學生的整體校園消費行為分為 4 類,因此將 k-means 演算法中的 k 值取為 4,運用公式 data = 1.0*(data - data.mean())/data.std() 進行資料標準化,采用歐式距離作為度量,并畫出每一項特征對應的資料直方圖如下

3.2.4 聚類結果分析
根據學生在 4 月份的消費金額、卡內盈余與消費次數,我們將學生分成了四類群體,分別命名為 0,1,2,3.
學生群體 0 的消費特點為:該群體屬于中等消費水平,有較高的消費潛力,這類學生群體應有較為良好的儲蓄意識,屬于滯后消費,
學生群體 1 的消費特點為:該群體屬于高消費水平,但消費潛力較弱,這類學生群體的消費能力較高,
學生群體 2 的消費特點為:該群體屬于低消費水平,且消費潛力較弱,這類學生群體的消費能力較弱,
學生群體 3 的消費特點為:該群體屬于中等消費水平,消費潛力較弱,這類學生群體的儲蓄意識較于學生群體 0 更弱,
任務 3.3 助學金評定
通過對低消費學生群體的行為進行分析,探討是否存在某些特征,能為學校助學金評定提供參考,

根據分類所得的貧困生情況,我們首先針對貧困生的性別進行分析,由上圖可看出,在已知的貧困生人數之中,超過半數的貧困生為女性,

根據分類所得的貧困生情況,對貧困生所在專業類別進行分析歸納,可發現,專業為理工科的學生中,貧困人口占比大;經管商科的學生中,貧困人口的占比數相較于理工科的會更少,而專業為藝術設計類的學生,貧困人口數量最少,


從上圖可以看出貧困生的單次消費金額主要在 51-100 元之間,消費次數主要在 501-750 元之間,卡內盈余主要在 100-200 元之間,和其他類別學生相比,我們可以看出貧困生的消費次數、消費金額和卡內盈余均較低,
從上述分析我們可以看出,貧困人口有較大概率集中在性別為女,專業為理工科,日常消費次數、消費金額以及卡內盈余都較低的學生當中,因此,學校在評定獎助學金的程序中,可以根據學生的性別、專業和日常消費情況對學生的貧困背景進行一個初步的估計,為后面對學生群體貧困背景的詳細調查,提供一個簡單的基礎,
4 關鍵代碼
task1.py
import pandas as pd
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
plt.style.use("fivethirtyeight")
sns.set_style({'font.sans-serif':['simhei','Arial']})
'''
任務 1.1 理解欄位含義,探查資料質量并進行缺失值和例外值等
方面的必要處理,
'''
# 匯入資料
df1 = pd.read_csv('data1.csv', encoding='gbk')
df2 = pd.read_csv('data2.csv', encoding='gbk')
df3 = pd.read_csv('data3.csv', encoding='gbk')
# 資料資訊總覽
print('**************************************************')
print(df1.shape)
print('**************************************************')
print(df2.shape)
print('**************************************************')
print(df3.shape)
print('**************************************************')
print('未去重: ', df1.shape)
print('去重: ', df1.drop_duplicates().shape)
print('未去重: ', df2.shape)
print('去重: ', df2.drop_duplicates().shape)
print('未去重: ', df3.shape)
print('去重: ', df3.drop_duplicates().shape)
print('**************************************************')
print(df1.info())
print('**************************************************')
print(df2.info())
print('**************************************************')
print(df3.info())
print('**************************************************')
print('**************************************************')
print(df1.describe())
print('**************************************************')
print(df2.describe())
print('**************************************************')
print(df3.describe())
print('**************************************************')
'''
**************************************************
(4341, 5)
**************************************************
(519367, 14)
**************************************************
(43156, 6)
**************************************************
# 檢查重復值
均無重復值
df1.describe().to_csv('data1_describe.csv')
df2.describe().to_csv('data2_describe.csv')
df3.describe().to_csv('data3_describe.csv')
'''
# 重新擺放列位置
columns = ['CardNo', 'Date', 'Money', 'FundMoney', 'Surplus', 'CardCount', 'Type', 'TermNo', 'OperNo',
'Dept']
df2 = pd.DataFrame(df2, columns=columns)
#print(df2.head())
# 觀察消費總額和消費次數之間的關系
#df2.to_csv('task1_1.csv')
#df_money_amount=df2.groupby('CardNo')['Money'].sum().sort_values(ascending=False).to_frame().reset_index()
#df_money_times=df2.groupby('CardNo')['CardCount'].max().sort_values(ascending=False).to_frame().reset_index()
#sns.regplot(x='Money',y='CardCount',data=df2)
#plt.show()
sns.distplot(df2['CardCount'],bins=100,color='r')
sns.kdeplot(df2['CardCount'],shade=True)
'''
通過 distplot 和 kdeplot 繪制柱狀圖觀察 CardCount 特征的分布情況,屬于長尾型別的分布,
這說明了有很多消費次數過多且超出正常范圍,
也可能是年級較為高的學生
'''
plt.show()
task2.py
import pandas as pd
'''
任務 1.2 將 data1.csv 中的學生個人資訊與 data2.csv 中的消費記錄建立
關聯,處理結果保存為“task1_2_1.csv”;將 data1.csv 中的學生個人資訊與
data3.csv 中的門禁進出記錄建立關聯,處理結果保存為“task1_2_2.csv”,
'''
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
# 匯入資料
df1 = pd.read_csv('data1.csv', encoding='gbk')
df2 = pd.read_csv('data2.csv', encoding='gbk')
df3 = pd.read_csv('data3.csv', encoding='gbk')
data1_2=df1.merge(df2,left_on='CardNo',right_on='CardNo')
data1_2.rename(columns={"Index_x": "Stu_Index"}, inplace=True)
data1_2.rename(columns={"Index_y": "Con_Index"}, inplace=True)
#print(data1_2.head())
data1_3=df1.merge(df3,left_on='AccessCardNo',right_on='AccessCardNo')
data1_3.rename(columns={"Index_x": "Stu_Index"}, inplace=True)
data1_3.rename(columns={"Index_y": "Acc_Index"}, inplace=True)
#print(data1_3.head())
data1_2.to_csv('task1_2_1.csv')
data1_3.to_csv('task1_2_2.csv')
其他代碼,文章篇幅有限,略
🚩 6 最后-畢設幫助 📢📢📢📣📣📣
畢設幫助,開題指導,技術解答
🇶746876041
關注公眾號獲取更多畢設資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415139.html
標籤:其他
