案件回顾
传统吉祥物还是萌系美少女
将数据存储为csv格式,导入python。并且计算顾客和店主对商业街魅力的支持情况,生成列联表。
import pandas as pd #导入数据 survey = pd.read_csv('survey.csv', encoding = 'utf-8') #计算顾客和店主对商业街魅力的支持情况 su1 = pd.DataFrame({'顾客':survey[survey.立场=='顾客'].回答6.value_counts()}) su2 = pd.DataFrame({'店主':survey[survey.立场=='店主'].回答6.value_counts()}) #合并数据框,生成列联表 survey2 = pd.concat([su1,su2],axis=1) survey2
为了使观察更直观,下面绘制关于列联表的堆积柱状图。
import matplotlib.pyplot as plt from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] survey2.T.plot(kind='bar', stacked=True, color=['black','gold','red','green'], grid=False) plt.show()
从图中可直观看出,店主们比较重视商品是否齐全,顾客们更关注的是实惠。店主们对活动方面花了不少心思,但顾客们兴趣不大,反而更注重店家的服务态度。并且,35名顾客对商业街对服务表示满意,而店主中选择服务态度好的人数只有9名,一定程度上说明店主对自己的服务态度缺乏自信。
虽然可以从图中分析出一些结论,但为了客观的说明顾客与店主的意见是否存在显著偏差,要进行独立性检验。
from scipy.stats import chi2_contingency chi2_contingency(survey2)
结果为:
(55.488971138570164,
5.3999746517395078e-12,
3,
array([[ 25.36945813, 24.63054187],
[ 30.44334975, 29.55665025],
[ 22.32512315, 21.67487685],
[ 24.86206897, 24.13793103]]))
其中,第一个值代表卡方值,第二个值代表pvalue,即概率,第三个值代表自由度。这里概率值几乎等于零,显然不足5%,因此,店主与顾客对商业街的期待有所不同。
接下来分析顾客和店主对吉祥物的选择上是否有分歧。
su11 = pd.DataFrame({'顾客':survey[survey.立场=='顾客'].回答7.value_counts()}) su22 = pd.DataFrame({'店主':survey[survey.立场=='店主'].回答7.value_counts()}) survey3 = pd.concat([su11.T,su22.T],axis=0) survey3
明显,顾客和店主的意见有分歧。没填答案的顾客太多,且几乎所有店主都选择了萌系美少女,选传统吉祥物的只有3人,数据分析中,存在不足5的频数,要尽量避免使用卡方检验。顾客回答两边基本一样多,且很多人没有填答案,证明顾客对这个不感兴趣。结合回答6的分析,顾客更期待的是促销。因此,与其设计吉祥物,不如搞一些打折促销的活动。
独立性检验:分析列联表2个属性之间是否存在关联性的方法。首先提出零假设,“两个属性相互独立”,即不具有关联性。如果概率不足5%,则抛弃零假设,选取备择假设,即“2个属性不相互独立”。如果概率大于等于5%,保留零假设。
后台回复“面包”,可获得本例中数据
机器学习养成记