




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python数据分析与应用案例教程Python数据分析与应用案例教程课堂实训和本章考核答案课堂实训和本章考核答案PAGEIIPAGEIIPAGEIIIPAGEIIIPAGE1PAGE1
第1章数据分析入门课堂实训#导入matplotlib中的pyplot模块,并设置别名为pltimportmatplotlib.pyplotasplt#定义列表score,保存数学成绩score=[97,83,85,120,101,88,66,101,85,76,96,66,69,88,60,49,60,70,71,56,83,82,100,76,95,60,65,101,110,71,70,63,57,55,46,65,59,56,75,80,79,45,91,54,78,68,110,77,94,87,79,95,77,93,86,99,125,89]#设置中文字体为SimHeiplt.rcParams['font.sans-serif']=['SimHei']plt.xlabel('分数') #设置x轴标题plt.ylabel('学生数量') #设置y轴标题plt.title('数学成绩分布直方图') #设置图表标题'''绘制直方图,score表示数据集;bin表示数据区间的取值,上限值和下限值分别为0和150,间隔为10;facecolor表示填充颜色;edgecolor表示边框颜色'''plt.hist(score,bins=range(0,150,10),facecolor='blue',edgecolor='red')plt.show() #显示图表本章考核1.选择题(1)B(2)D(3)C2.简答题(1)数据分析是利用数学、统计学理论相结合的统计分析方法对获取的大量数据进行分析,提取有用信息并形成结论,对数据加以详细研究和概括总结的过程。它的本质是通过总结繁多、复杂的数据的内在规律,帮助人们做出判断,以便采取适当的行动。(2)数据分析的流程大致可分为6步,分别为需求分析、数据获取、数据存储、数据预处理、数据分析和数据可视化。(3)数据分析常见的应用场景包括电商行业、金融行业、医疗行业、教育行业和政务管理。3.实践题#导入matplotlib中的pyplot模块,并设置别名为pltimportmatplotlib.pyplotasplt#定义列表score_chinese,保存语文成绩score_chinese=[107,77,94,87,90,95,92,93,86,101,85,76,96,99,110,89,101,110,97,83,85,83,101,75,80,79,102,91,88,66,76,69,88,60,89,60,70,71,56,83,82,68,76,95,83,65,54,78,68,71,70,63,57,43,71,65,85,40]#定义列表score_math,保存数学成绩score_math=[97,83,85,120,101,88,66,101,85,76,96,66,69,88,60,49,60,70,71,56,83,82,100,76,95,60,65,101,110,71,70,63,57,55,46,65,59,56,75,80,79,45,91,54,78,68,110,77,94,87,79,95,77,93,86,99,125,89]#定义列表score,保存总成绩score=[0]*len(score_math)foriinrange(len(score_math)):score[i]=score_chinese[i]+score_math[i]#设置中文字体为SimHeiplt.rcParams['font.sans-serif']=['SimHei']plt.xlabel('分数') #设置x轴标题plt.ylabel('学生数量') #设置y轴标题plt.title('总成绩分布直方图') #设置图表标题'''绘制直方图,score表示数据集;bin表示数据区间的取值,上限值和下限值分别为0和150,间隔为10;facecolor表示填充颜色;edgecolor表示边框颜色'''plt.hist(score,bins=range(0,300,10),facecolor='red',edgecolor='black')plt.show() #显示图表第2章Python数据分析基础课堂实训importpandasaspdpd.set_option('display.unicode.east_asian_width',True)df=pd.read_excel('城镇单位就业人员年平均工资.xlsx',sheet_name='按登记注册类型',index_col=0)df.drop(['数据来源:国家统计局'],inplace=True)df.loc['外商投资单位']=[112089,106604,99367,90064,82902,76302,69826,63171,55888,48869,41739,37101,34250,29594,26552,23625,22250,21016,19409,17553]print('删除数据后的城镇单位就业人员年平均工资:\n',df)writer=pd.ExcelWriter('按登记注册类型城镇单位就业人员年平均工资.xlsx')df.to_excel(writer,sheet_name='按登记注册类型')writer.save()本章考核1.选择题(1)D(2)A(3)A(4)C(5)B(6)A(7)D(8)A(9)B(10)C2.填空题(1)Series和DataFrame(2)索引、数据(3)df.shape(4)df.indexdf.columns(5)[[012][345]](6)[[23][56]][45][36][[1][4][7]](7)[[123][234][345]](8)adbc011023141156271289(9)0120110101410112789(10)adbcm41056n71089i111213143.实践题(1)importnumpyasnparr=np.zeros((8,8),dtype='int') #创建元素都为0的8×8的数组foriinrange(8):ifi%2==0:arr[i][1:8:2]=1 #将偶数行的黑格赋1else:arr[i][0:8:2]=1 #将奇数行的黑格赋1foriinrange(8): #循环输出数组forjinrange(8):print(arr[i][j],end='\t')print()(2)importpandasaspddict={'姓名':['赵文','李蒙','刘武','何花'],'职务':['主管','副主管','员工','员工'],'基本工资':[8000,7000,5000,5500],'联系方式':['152××××9852','150××××5820','136××××8962','131××××9860']}index=['1','2','3','4']df=pd.DataFrame(dict,index)df.loc['5']=['李华','员工','5200','136××××1235']df.insert(1,'性别',['女','男','男','女','女'])df.iloc[2,2]='副主管'print('所有员工信息:\n',df)print('主管或副主管的信息:\n',df.loc[(df['职务']=='主管')|(df['职务']=='副主管')])df.to_csv('employee.csv',encoding='GBK')第3章Pandas数据预处理课堂实训importpandasaspdfromopenpyxlimportload_workbookdf=pd.read_excel('第4分店产品销售表.xlsx')df1=pd.DataFrame()groups=df.groupby('单价(元)') #按单价分组forgroupingroups:#获取分组后每个元组的第2个元素,并使用其创建DataFrame对象df_temp=pd.DataFrame(group[1])#替换产品名称列缺失值df_temp.fillna(method='bfill',inplace=True)#外连接每个组中的数据df1=pd.concat([df1,df_temp])df1.drop_duplicates(inplace=True) #删除完全重复的行df2=pd.DataFrame()#将处理缺失值后的数据按季度分组,并将数据预处理成第1分店工作表中的格式groups=df1.groupby('季度')forgroupingroups:df_temp=pd.DataFrame(group[1])df2=pd.concat([df2,df_temp],ignore_index=True)df2.insert(0,'分店名称','第4分店')book=load_workbook('产品销售表.xlsx')writer=pd.ExcelWriter('产品销售表.xlsx')#创建ExcelWrite对象writer.book=book#将数据保存到第4分店工作表中df2.to_excel(writer,sheet_name='第4分店',index=False)writer.save() #保存数据本章考核1.选择题(1)D(2)A(3)A(4)D(5)B(6)A(7)B(8)A(9)C(10)D2.填空题(1)df.dropna(subset=['A'])(2)to_datetime()(3)pd.merge(df1,df2,how='left')pd.concat([df1,df2],join='inner')(4)duplicated()drop_duplicates()(5)cut()get_dummies()(6)get_group()(7)012055.04.0165.04.0275.08.0(8)0101(0,10]110(0,10]220(10,20](9)工号部门年龄女男0001编辑部25011002课程部30012003编辑部2710(10)BCsummeansummeanA131.5147.0273.5105.03.实践题(1)importpandasaspdpd.set_option('display.unicode.east_asian_width',True)#读取“1—3月入职员工信息.xlsx”文件4个工作表的数据df=pd.read_excel('1—3月入职员工信息.xlsx',index_col=0,sheet_name=['1月','2月','3月','1月员工补充信息'])print('原始数据:\n',df)#获取1月入职员工信息及其补充信息df1_1,df1_2=df['1月'],df['1月员工补充信息']df2,df3=df['2月'],df['3月'] #获取1月和2月入职员工信息df1=pd.merge(df1_1,df1_2) #横向合并1月入职员工信息及其补充信息#纵向连接1月、2月和3月入职员工的信息df_total=pd.concat([df1,df2,df3])df_total=df_total.reset_index(drop=True) #重置连续行索引print('1—3月入职员工的信息:\n',df_total)groups=df_total.groupby('学历') #按学历分组forgroupingroups:print(group)print(groups.agg('mean')['基本工资']) #求均值聚合(2)importpandasaspdpd.set_option('display.unicode.east_asian_width',True)'语文':[85,102,96,126,130,135],'数学':[100,90,124,123,140,109],'英语':[83,110,123,103,135,90]})print('原始数据:\n',df)group1=df.groupby('班级')print('以key列按行分组:')foriingroup1: #循环输出分组结果print(i)print('每个班每个科目的平均成绩:\n',group1.agg('mean'))group2=df.groupby({'语文':'总成绩','数学':'总成绩','英语':'总成绩'},axis=1)print('以列标签按列分组:')foriingroup2: #循环输出分组结果print(i)df['总成绩']=group2.agg('sum')#按行求和聚合计算每个学生的总成绩print('添加总成绩后的数据:\n',df)#按行求均值聚合计算每个学生的平均成绩df['平均成绩']=group2.agg('mean')print('添加平均成绩后的数据:\n',df)bins_value=[0,90,110,135,150]labels_value=['不合格','中','良','优']df['等级']=pd.cut(df['平均成绩'],bins=bins_value,right=False,include_lowest=True,labels=labels_value)print('根据平均成绩判断等级后的数据:\n',df)(3)importpandasaspdpd.set_option('display.unicode.east_asian_width',True)df=pd.DataFrame({'year':[2019,2020,None,2020,2022],'month':[3,None,6,9,12],'day':[4,2,21,2,15]})print('原始数据:\n',df)df.fillna({'year':2021,'month':9},inplace=True)print('替换缺失值后的数据:\n',df)df.drop_duplicates(keep=False,inplace=True)print('删除重复值后的数据:\n',df)df['组合时间']=pd.to_datetime(df)print('添加组合时间后的数据:\n',df)第4章Pandas数据分析课堂实训importpandasaspdpd.set_option('display.unicode.east_asian_width',True)df=pd.read_excel('互联网广告智能投放数据.xlsx')df['投放时间']=pd.to_datetime(df['投放时间']).dt.hourdf1=df.groupby('投放时间').agg({'价格(元)':'sum'})df1['排名']=df1.rank(method='first',ascending=False)df1.sort_values(by='排名',ascending=True,inplace=True)print('按每个投放时间的总额降序排名和升序排序:\n',df1)df2=pd.crosstab(index=df['渠道'],columns=df['性别'],margins_name='比例',margins=True,normalize=True)print('渠道和性别的交叉表:\n',df2)df=pd.get_dummies(df,prefix='',prefix_sep='',columns=['是否点击'])df3=pd.pivot_table(df,values='是',index='渠道',columns='性别',aggfunc='sum')print('点击次数、渠道和性别的透视表:\n',df3)本章考核1.选择题(1)B(2)B(3)C(4)A(5)D(6)D(7)C(8)B(9)A(10)A2.填空题(1)4.5(2)top(3)正偏态(4)强(5)3(6)corr()(7)pd.pivot_table(df,values='消费金额',index='性别',columns='年龄',aggfunc='sum')(8)01(9)bcBC0.50AC0.25CB0.25(10)原始数据排名151.0252.0353.0544.0435.0026.03.实践题importpandasaspdpd.set_option('display.unicode.east_asian_width',True)df=pd.read_excel('超市运营数据.xlsx')data=[]foriinrange(df['折扣'].size):ifdf['折扣'][i]==0:data.append(1)else:data.append(df['折扣'][i])df['总额']=df['价格']*df['数量']*datadf1=df.groupby('销售经理').agg({'总额':'sum'})df1['排名']=df1.rank(method='first',ascending=False)df1.sort_values(by='排名',ascending=True,inplace=True)print('按销售经理的销售额降序排名和升序排序:\n',df1)df2=df.groupby('客户类型').agg({'总额':'sum'})df2['排名']=df2.rank(method='first',ascending=False)df2.sort_values(by='排名',ascending=True,inplace=True)print('按客户名称的销售额降序排名和升序排序:\n',df2)print('每个客户类型的总数:\n',df.value_counts('客户类型'))print('价格的平均值:',df['价格'].mean())print('价格的最大值:',df['价格'].max())print('价格的最小值:',df['价格'].min())df3=pd.crosstab(index=df['客户类型'],columns=df['销售经理'])print('客户类型和销售经理的交叉表:\n',df3)df4=pd.pivot_table(df,values='数量',index='计划发货天数',columns='折扣',aggfunc='sum')print('计划发货天数、折扣和数量的透视表:\n',df4)df5=df[['计划发货天数','价格','数量','折扣']]print('计划发货天数、价格、数量和折扣之间的相关系数:\n',df5.corr())第5章Matplotlib数据可视化课堂实训importmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnpdf=pd.read_excel('餐厅订单信息.xlsx')plt.rcParams['font.sans-serif']='SimHei'#绘制各分店不同星级会员消费金额柱状图plt.figure()width=0.15i=0x=np.arange(3)groups=df.groupby('店铺名')shop_name=[]forgroupingroups:shop_name.append(group[0])df_temp=pd.DataFrame(group[1])df_temp=df_temp.groupby('会员星级').agg('sum',numeric_only=True)height=df_temp['消费金额']plt.bar(x+width*i,height,width)i+=1plt.legend(shop_name)plt.xlabel('会员星级')plt.ylabel('消费金额/元')plt.xticks(range(3),df_temp.index)plt.title('各分店不同星级会员消费金额柱状图')#绘制菜品数量分布直方图plt.figure()x=df['价格']plt.xlabel('菜品价格/元')plt.ylabel('菜品数量')plt.title('菜品数量分布直方图')plt.hist(x,bins=8,color=(0.894,0,0.498),edgecolor='k')#绘制菜品价格与消费金额相关性散点图plt.figure()x=df['价格']y=df['消费金额']plt.scatter(x,y)plt.title('菜品价格与消费金额相关性散点图')plt.show()本章考核1.选择题(1)A(2)C(3)B(4)D(5)D(6)A(7)B(8)D(9)A(10)B2.填空题(1)title()(2)xticks()(3)edgecolor(4)marker(5)%.1f%%(6)whis(7)pyplot(8)grid(axis='x')(9)barh()(10)数据所属的区间区间对应数据的数量或占比3.实践题(1)importmatplotlib.pyplotaspltimportpandasaspd #导入pandas库df=pd.read_excel('城镇单位就业人员年平均工资.xlsx',sheet_name='按登记注册类型',index_col=0)df.drop(['数据来源:国家统计局'],inplace=True)df.sort_index(axis=1,inplace=True)plt.rcParams['figure.figsize']=(12,8)plt.rcParams['font.sans-serif']='SimHei'plt.title('按登记注册类型分析城镇单位就业人员年平均工资')plt.xlabel('年份')plt.ylabel('平均工资/元')x=df.columnsforindexindf.index:plt.plot(x,df.loc[index])plt.legend(df.index)plt.show()(2)importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('产品销售表.xlsx',sheet_name=['第1分店','第2分店','第3分店'])df=pd.concat([df['第1分店'],df['第2分店'],df['第3分店']])#删除数量列包含缺失值的行df.dropna(axis=0,subset=['数量'],inplace=True)df.drop_duplicates(inplace=True) #删除完全重复的行df_temp=df.groupby('分店名称').agg('sum')['销售额(万元)']plt.pie(df_temp,labels=df_temp.index,autopct='%.2f%%')plt.rcParams['font.sans-serif']='SimHei'plt.title('各分店产品销售额')plt.show()(3)importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspddf=pd.read_excel('超市销售信息表.xlsx')plt.rcParams['font.sans-serif']='SimHei'width=0.2i=0groups=df.groupby('分店')x=np.arange(2)shop_name=[]forgroupingroups:shop_name.append(group[0])df_temp=pd.DataFrame(group[1])df_temp=df_temp.groupby('顾客类型').agg('sum',numeric_only=True)height=df_temp['支付费用(元)']plt.bar(x+width*i,height,width)i+=1plt.legend(shop_name,loc='uppercenter')plt.xlabel('顾客类型')plt.ylabel('支付费用/元')plt.xticks(range(2),df_temp.index)plt.title('各分店不同类型顾客支付费用柱状图')plt.show()第6章旅游网站精华游记数据分析本章考核importpandasaspd #导入pandas模块importmatplotlib.pyplotasplt #导入pyplot模块df=pd.read_excel('某电商网站手机销售数据.xlsx')#定义函数,处理评价数中的字符defdealComment_num(comm_colum):num=comm_columiftype(num)==str:num=num.replace('+','')if'万'innum:if'.'innum:num=num.replace('.','').replace('万','000')else:num=num.replace('万','0000')returnnum#筛选出标明价格的手机df=df[~df['价格'].str.contains('待发布')]#处理价格中的‘¥’字符df['价格']=df['价格'].str.replace('¥','')#将价格转化为浮点型df['价格']=df['价格'].astype('float')df.dropna(inplace=True)#使用lambda调用dealComment_num函数df['评价数']=df['评价数'].apply(lambdax:dealComment_num(x))#将评价数转化为整型df['评价数']=df['评价数'].astype('int')#正常显示中文标签plt.rcParams['font.sans-serif']=['SimHei']#绘制手机价格分布区间直方图plt.figure(figsize=(10,8)) #生成绘图窗口plt.hist(df['价格'],bins=50,color='deeppink')plt.xlabel('价格/元') #添加x轴标题plt.ylabel('数量/台') #添加y轴标题plt.title('手机价格分布') #添加窗口标题num_total=str(df.shape[0]) #计算样本总数s='样本总数为'+num_total #初始化字符串s#添加样本总数说明plt.text(20000,400,s,fontsize=15,color='deeppink')#提取包含mate40的商品信息mate40=df[df['商品名'].str.contains('mate40')|df['商品名'].str.contains('mate40')|df['商品名'].str.contains('Mate40')|df['商品名'].str.contains('Mate40')]#计算mate30的总评价数mate40_total=mate40['评价数'].sum()#计算mate30的均价mate40_price=int(mate40['价格'].mean())#提取包含p50的商品信息p50=df[df['商品名'].str.contains('p50')|df['商品名'].str.contains('p50')|df['商品名'].str.contains('P50')|df['商品名'].str.contains('P50')]#计算p50的总评价数p50_total=p50['评价数'].sum()#计算p50的均价p50_price=int(p50['价格'].mean())#提取包含nova9的商品信息nova9=df[df['商品名'].str.contains('nova9')|df['商品名'].str.contains('nova9')]#计算nova9的总评价数nova9_total=nova9['评价数'].sum()#计算nova9的均价nova9_price=int(nova9['价格'].mean())#提取包含畅享20的商品信息畅享20=df[df['商品名'].str.contains('畅享20')|df['商品名'].str.contains('畅享20')]#计算畅享20的总评价数畅享20_total=畅享20['评价数'].sum()#计算畅享20的均价畅享20_price=int(畅享20['价格'].mean())#初始化标签列表title_list=['Mate40','P50','nova9','畅享20']#初始化评价数列表sale_list=[mate40_total,p50_total,nova9_total,畅享20_total]#初始化均价列表price_list=[mate40_price,p50_price,nova9_price,畅享20_price]#绘制华为各系列手机销量柱状图plt.figure(figsize=(10,8),dpi=80) #生成绘制柱状图窗口#根据sale_list列表绘制图plt.bar(range(4),sale_list,width=0.5,color='deeppink')plt.xticks(range(4),title_list) #在每个长条下方添加手机系列plt.ylabel('销量/台') #添加x轴标题plt.xlabel('型号') #添加y轴标题plt.title('华为各系列手机销量') #添加窗口标题#在长条上方添加评价数forx,yinenumerate(sale_list):plt.text(x,float(y)+0.1,y,ha='center')#绘制华为各系列手机均价柱状图plt.figure(figsize=(10,8),dpi=80) #生成绘制柱状图窗口#根据price_list列表绘制图plt.bar(range(4),price_list,width=0.5,color='deeppink')plt.xticks(range(4),title_list) #在每个长条下方添加手机型号plt.ylabel('均价/元') #添加x轴标题plt.xlabel('型号') #添加y轴标题plt.title('华为各系列手机均价') #添加窗口标题#在长条上方添加均价forx,yinenumerate(price_list):plt.text(x,float(y)+0.1,y,ha='center')plt.figure()#以店铺名分组shops=df.groupby('店铺名',as_index=False)#每一组评价数求和shops=shops.agg({'评价数':'sum'})#总的评价数求和comment_total=shops['评价数'].sum()#计算每个店铺评价数比例shops['评价数比例']=shops['评价数']*100/comment_total#按评价比例降序排序shops=shops.sort_values('评价数比例',ascending=False)#取出评价数比例前10的店铺top10=shops.head(10)label_list=list(top10['店铺名']) #定义标签列表label_list.append('其他')size_list=list(top10['评价数比例']) #定义大小列表size_list.append(100-sum(size_list))color=['red','green','blue','orange','turquoise','sienna','pink','gray','gold','fuchsia','dodgerblue'] #定义各部分颜色#绘制饼状图patches,l_text,p_text=plt.pie(size_list,colors=color,labels=label_list,labeldistance=1.1,autopct="%1.1f%%",shadow=False,startangle=90,pctdistance=0.6)plt.axis('equal') #设置横轴和纵轴大小相等plt.show() #显示绘图第7章二手房数据分析与房价预测本章考核importmatplotlib.pyplotaspltimportpandasaspddf=pd.read_excel('最新发布的北京二手房数据_预处理.xlsx')plt.rcParams['font.sans-serif']='SimHei'#绘制前10热门小区二手房数量柱状图df_count=df.groupby('小区名').size()df_count_top10=df_count.sort_values(ascending=False).head(10)plt.figure(figsize=(14,6))ax1=plt.subplot(1,1,1)x=df_count_top10.indexheight=df_count_top10ax1.bar(x,height,width=0.6,color=(0.894,0,0.498))ax1.set_ylabel('房源数量')ax1.legend(('数量',),loc='upperleft')plt.title('前10热门小区二手房数量和均价双轴图')#绘制前10热门小区二手房均价折线图df_average_price=df.groupby('小区名')['单价(元/平方米)'].agg('mean')ax2=ax1.twinx()y=df_average_price.loc[df_count_top10.index]ax2.plot(x,y,'b-.*')ax2.set_ylabel('房源均价/(元/平方米)')ax2.legend(('均价',),loc='upperright')fora,binzip(x,y):ax2.text(a,b,'%d'%b,ha='center')plt.show()plt.figure()#房龄数据的离散化bins=[1,5,10,15,20,25,30,35,40,45,50]year_label=['5年以下','5~10年','10~15年','15~20年','20~25年','25~30年','30~35年','35~40年','40~45年','45~50年']df['房龄区间']=pd.cut(list(df['房龄']),bins,labels=year_label)#绘制北京二手房房龄区间占比饼状图df_area_count=df.groupby('房龄区间').size()x=df_area_countlabel=df_area_count.indexplt.pie(x,labels=label,autopct='%.2f%%')plt.title('北京二手房房龄区间占比饼状图')plt.show()#绘制北京二手房面积区间均价柱状图df_price=df.groupby('面积区间')['单价(元/平方米)'].mean()plt.figure(figsize=(10,6))y=df_price.indexwidth=df_priceplt.barh(y,width,height=0.5,color=(0.894,0,0.498))plt.ylabel('面积区间')plt.xlabel('均价/(元/平方米)')plt.title('北京二手房面积区间均价柱状图')fora,binzip(width,y):plt.text(a,b,'%d'%a,va='center')plt.show()importrefromsklearnimportmodel_selectionfromsklearn.linear_modelimportLinearRegressiondf['总楼层']=df['楼层'].apply(lambdax:re.findall(r'\d+',x)[0]).astype('int')total_price=df['总价(万元)']house_area=df['面积(平方米)']house_type=df[['室','厅']]house_regin=df[['通州','朝阳','昌平','顺义','丰台','海淀','西城','房山','石景山','大兴','怀柔','东城','门头沟','密云','延庆','平谷','亦庄开发区']]house_finish=df[['毛坯','简装','精装']]house_structure=df[['塔楼','板楼','板塔结合','平房']]is_subway=df[['近地铁','不近地铁']]house_dirt=df[['东','南','西','北','东北','东南','西南','西北']]house_year=df['房龄']house_floor=df['总楼层']#选择自变量和因变量x=pd.concat([house_area,house_type,house_regin,house_finish,house_structure,is_subway,house_dirt,house_year,house_floor],axis=1)y=total_price#划分训练集与测试集x_train,x_test,y_train,y_test=model_selection.train_test_split(x,y,test_size=0.2)LR=LinearRegression() #建立线性回归模型reg=LR.fit(x_train,y_train) #训练模型predicted=reg.predict(x_test) #对测试集的自变量进行估计plt.figure(figsize=(12,6))n=50plt.plot(range(n),y_test[-n:],'-.*') #绘制实际值plt.plot(range(n),predicted[-n:],'r--.') #绘制估计值plt.legend(['实际值','估计值'])plt.xlabel('后50个数据')plt.ylabel('总价/万元')plt.title('二手房总价实际值和估计值折线图')plt.show()#定义两组房源的自变量信息,添加到x_test中#80平方米、2室1厅、海淀、精装、塔楼、近地铁、朝南、5年、18层x_test.loc[len(x_test)]=[80,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,5,18]predicted=reg.predict(x_test) #预测数据#输出预测值print('80平方米、2室1厅、海淀、精装、塔楼、近地铁、朝南、5年、18层的总价预测值(万元):\n',predicted[-1])第8章电商店铺客户价值分析本章考核importpandasaspdimportnumpyasnpfrommatplotlibimportpyplotaspltdf=pd.read_excel('餐饮综合数据.xlsx',sheet_name='订单信息表')plt.rcParams['font.sans-serif']='SimHei'pd.set_option('display.unicode.east_asian_width',True)df=df.dropna(subset='结算时间')df1=df.groupby('会员名').size()new_index=df1[df1==1].indexold_index=df1[df1!=1].indexdf2=df.set_index('会员名')df_new=df2.loc[new_index]df_old=df2.loc[old_index]#新老客户人数占比分析plt.figure()data1=[new_index.size,old_index.size]plt.pie(data1,labels=['新客户','老客户'],autopct='%.2f%%')plt.title('新老客户人数占比饼状图')plt.show()#新老客户总消费金额占比分析plt.figure()data2=[df_new['消费金额'].sum(),df_old['消费金额'].sum()]plt.pie(data2,labels=['新客户','老客户'],autopct='%.2f%%')plt.title('新老客户总消费金额占比饼状图')plt.show()#新老客户客单价分析plt.figure()x=['新客户','老客户']h1=df_new['消费金额'].sum()/new_index.sizeh2=df_old['消费金额'].sum()/old_index.sizeheight=[h1,h2]plt.bar(x,height,width=0.3)plt.ylabel('客单价/元')plt.title('新老客户客单价柱状图')fora,binzip(x,height):plt.text(a,b,'%.1f'%b,ha='center')plt.show()df['订单日期']=pd.to_datetime(df['点餐时间']).dt.datedf['消费时间间隔']=(pd.to_datetime(df['订单日期'].max())-pd.to_datetime(df['订单日期']))/np.timedelta64(1,'D')df_temp=df[['会员名','消费时间间隔','订单日期','消费金额']]df_temp=df_temp.groupby('会员名').agg({'消费时间间隔':'min','会员名':'size','消费金额':'sum'})df_temp=df_temp.rename(columns={'消费时间间隔':'R-最近消费时间间隔','会员名':'F-消费频率','消费金额':'F-消费金额'})#特征值标准化df_std=(df_temp-df_temp.mean(axis=0))/df_temp.std(axis=0)print(df_std)#客户聚类fromsklearn.clusterimportKMeansk=3 #设置聚类类别数kmodel=KMeans(n_clusters=k) #创建聚类模型kmodel.fit(df_std) #计算聚类算法属性df_temp['聚类类别']=kmodel.labels_df_mean=df_temp.groupby('聚类类别').mean()df_mean['客户数']=df_temp.groupby('聚类类别').size()df_mean.loc['均值']=df_mean.mean()print(df_mean)PAGEIPAGEI目录目录0101第1章数据分析入门 11.1数据分析概述 21.1.1什么是数据分析 21.1.2数据分析的流程 21.1.3数据分析的应用场景 41.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供排水系统设计合同
- KTV酒水采购合同7篇
- 火炬管道销售合同
- 政府采购合同履约验收管理办法模板
- 变压器采购合同
- 代理合同-总代理合同8篇
- 工业园租赁合同
- 场地厂房租赁合同
- 福建三支一扶考试中需要掌握的试题及答案
- 固体矿产地质勘查规范应用
- 安全生产、文明施工资金保障制度11142
- 安徽省C20教育联盟2024-2025学年九年级下学期3月月考数学试题 (原卷版+解析版)
- 2025新疆机场(集团)有限责任公司阿克苏管理分公司第一季度招聘(75人)笔试参考题库附带答案详解
- 2025年高级育婴师的试题及答案
- 中药性状鉴定技术知到课后答案智慧树章节测试答案2025年春天津生物工程职业技术学院
- 2025年北京电子科技职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- GB/T 45120-2024道路车辆48 V供电电压电气要求及试验
- 2025年广东深圳市职业病防治院选聘事业单位常设岗位3人历年高频重点提升(共500题)附带答案详解
- 儿童哮喘预防
- 人工智能设计伦理知到智慧树章节测试课后答案2024年秋浙江大学
- 《陆上风电场工程概算定额》NBT 31010-2019
评论
0/150
提交评论