期末商业数据分析课程考试重点"/>
学校期末商业数据分析课程考试重点
商业数据分析
文章是根据老师划的重点整理的,如有不完善的地方可以联系我修正。
一、数据分析
数据分析的基本概念
从已有的数据中,利用统计、挖掘等方法,提取隐含规则,辅助决策。
数据分析应用场景
- 客户分析
- 营销分析
- 社交媒体分析
- 设备管理
数据分析过程
-
定义分析目标
-
数据取样
-
数据探索
-
数据预处理
-
分析建模
-
模型评价
二、数据质量分析
脏数据
- 缺失值
- 异常值
- 不一致的值
- 重复数据及含有特殊符号(如#、¥、*)的数据
脏数据产生的原因
- 有些信息暂时无法获取,或者获取信息的代价太大。
- 有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写或对数据理解错误等一些人为因素而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障等机械原因而丢失。
- 属性值不存在。在某些情况下,缺失值并不意味着数据有错误,对一些对象来说属性值是不存在的,如一个未婚者的配偶姓名、一个儿童的固定收入状况等。
数据的缺失影响
- 数据挖掘建模将丢失大量的有用信息
- 数据挖掘模型所表现出的不确定性更加显著,模型中蕴涵的确定性成分更难把握
- 包含空值的数据会使挖掘建模过程陷入混乱,导致不可靠的输出
异常值分析
异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点的分析。
异常值分析方法
-
简单统计量分析
-
3σ原则
与平均值的偏差超过三倍标准差的值:正常取值几乎全部集中在**(μ-3σ,μ+3σ)**区间内,超出这个范围的可能性仅占不到0.3%。
# 计算均值 mean = df['value'].mean # 计算标准差 std = df['value'].std # 识别异常值 error = df[np.abs(df['value'] - mean) > 3*std] # 剔除异常值,保留正常的数据 data_c = df[np.abs(df['value'] - mean) <= 3*std]
-
箱型图分析
相关系数
餐饮销量数据和节假日、天气等因素都可能有关系,使用相关性分析可以得到餐饮销量数据和其他因素的相关性,其Python代码如下所示:
import pandas as pd
data = pd.read_excel('catering_sale_all.xls', index_col = u'日期')
data.corr() #相关系数矩阵
data.corr()[u'百合酱蒸凤爪']
#列与列之间的相关系数
corr=data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺'])
三、数据预处理
主要任务
数据清洗
数据清洗主要是删除原始数据集中的无关数据、重复数据,平滑噪声数据,处理缺失值、异常值等。
- 拉格朗日插值法
一道计算题
题目会给你几个点(大概率是三个点),让你预测某一个x所对应的y值应该是多少?
例如:(10,1),(15,1.1761),(20,1.3010)求(12,?)
第一步:
对每一个点有 l(x) 就是x的值相互减
( x − 15 ) ( x − 20 ) ( 10 − 15 ) ( 10 − 20 ) \frac{(x-15)(x-20)}{(10-15)(10-20)} (10−15)(10−20)(x−15)(x−20)
( x − 10 ) ( x − 20 ) ( 15 − 10 ) ( 15 − 20 ) \frac{(x-10)(x-20)}{(15-10)(15-20)} (15−10)(15−20)(x−10)(x−20)
( x − 10 ) ( x − 15 ) ( 20 − 10 ) ( 20 − 15 ) \frac{(x-10)(x-15)}{(20-10)(20-15)} (20−10)(20−15)(x−10)(x−15)
第二步:
对应的y * 对应的式子l(x)
1 ∗ ( x − 15 ) ( x − 20 ) ( 10 − 15 ) ( 10 − 20 ) + 1.1761 ∗ ( x − 10 ) ( x − 20 ) ( 15 − 10 ) ( 15 − 20 ) + 1.3010 ∗ ( x − 10 ) ( x − 15 ) ( 20 − 10 ) ( 20 − 15 ) 1*\frac{(x-15)(x-20)}{(10-15)(10-20)}+1.1761*\frac{(x-10)(x-20)}{(15-10)(15-20)}+1.3010*\frac{(x-10)(x-15)}{(20-10)(20-15)} 1∗(10−15)(10−20)(x−15)(x−20)+1.1761∗(15−10)(15−20)(x−10)(x−20)+1.3010∗(20−10)(20−15)(x−10)(x−15)
将x换成我们题目要求的12就算出了要求的值 ?
- 异常值处理常用方法
异常值处理方法 | 方法描述 |
---|---|
视为缺失值 | 将异常值视为缺失值,利用缺失值处理的方法进行处理。 |
平均值修正 | 可用前后两个观测值的平均值修正该异常值。 |
不处理 | 直接在具有异常值的数据集上进行挖掘建模。 |
删除含有异常值的记录 | 直接将含有异常值的记录删除。 |
数据集成
- 合并数据
- Merge
import pandas as pd
df1=pd.DataFrame({'key':['a','b','d'],'data1':range(3)})
df2=pd.DataFrame({'key':['a','b','c'],'data2':range(3)})
pd.merge(df1,df2)
pd.merge(df1,df2,how='outer')#多键连接
right=pd.DataFrame({'key1':['foo','foo','bar','bar'], 'key2':['one','one','one','two'], 'lval':[4,5,6,7]})
left=pd.DataFrame({'key1':['foo','foo','bar'], 'key2':['one','two','one'], 'lval':[1,2,3]}) pd.merge(left,right,on=['key1','key2'],how='right')#列名不同,分别指定
df3=pd.DataFrame({'key3':['foo','foo','bar','bar'],'key4':['one','one','one','two'], 'lval':[4,5,6,7]})
pd.merge(left,df3,left_on='key1',right_on='key3',how='right')
- Join
import pandas as pd
left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']},index=['K0', 'K1', 'K2'])
right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],'D': ['D0', 'D2', 'D3']},index=['K0', 'K2', 'K3'])left.join(right)
数据变换
数据规约
四、绘制图形
折线图
import matplotlib.pyplot as plt#读入数据
meal_order_df = pd.read_excel("meal_order_info.xls",encoding="gbk")df2 = meal_order_df.groupby('org_id')[['expenditure']].sum()
#设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# fig = plt.figure()
ax = plt.figure().add_subplot(1,1,1)
#df2.index=[304, 310, 328, 329, 330]
# ax.plot(df2, marker='o', label='营业额')
df2.plot(ax=ax, marker='o', label='营业额')
ax.set_title('分店营业额')
ax.set_ylabel("营业额",rotation=30)
ax.set_xticks(df2.index)
ax.set_xticklabels([('分店1')[::-1],'分店2','分店3','分店4','分店5'],rotation=0, fontsize='small')
柱形图
#读入数据
detail_df=pd.read_excel('detail.xls',encoding='utf-8')caipin=detail_df[['place_order_time','dishes_name','amounts']]
df3=caipin.groupby('dishes_name').sum().sort_values(by='amounts',ascending=False).head(10)
#设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsefig = plt.figure()
ax = fig.add_subplot(1,1,1)(df3.cumsum()/5).plot(marker='o',ax=ax,label='菜品累加销量')
# ax.plot((df3.cumsum()/5),marker='o',label='菜品累加销量')
df3.plot.bar(ax=ax,label='单品销量')
ax.set_title('贡献度分析')
ax.set_ylabel("营业额",rotation=30)
ax.set_xlabel("菜品",rotation=30)
更多推荐
学校期末商业数据分析课程考试重点
发布评论