参考答案-Python语言-8_第1页
参考答案-Python语言-8_第2页
参考答案-Python语言-8_第3页
参考答案-Python语言-8_第4页
参考答案-Python语言-8_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python语言及其应用第8章Python数据挖掘与分析PAGE220PAGE2218.3.2习题1.简述数据获取和收集的方法。答:查阅书籍、问卷调查、互联网数据抓取等2.列举pandas支持的标准统计函数。答:min()、max()、mean()等3.列举pandas数据合并的三种方式。答:merge()、concat()、combine_first4.简述使用matplotlib库绘图的步骤。答:步骤1:创建一个图纸(figure)。步骤2:在图纸上创建一个或多个绘图(plotting)区域(也叫子图、坐标系/轴、axes)。步骤3:在plotting区域描绘点、线等各种marker。步骤4:为plotting添加修饰标签(绘图线上的或坐标轴上的)。步骤5:根据需要可以进行自定义。8.5实训实训:数据挖掘与分析一、实训目的1.了解Python进行数据处理的过程。2.掌握数据获取与收集的方法。3.学会数据清洗和整理的方法。4.了解数据统计的方法。5.能够利用可视化工具进行数据的展示。二、实训任务任务1:【爬取样本网页】样本文件为8.1.1节中的网页样本moviesample.htm,利用Python,爬取样本网页中各个电影的票房信息并计算A平台的票房平均值。程序编写于下方'''

样本文件为8.1.1节中的网页样本moviesample.htm,利用Python,爬取样本网页中各个电影的票房信息并计算A平台的票房平均值。

'''

defjudge(x):

if'万'inx:

returneval(x.replace('万',''))*10000

else:

returneval(x)

fromlxmlimportetree

importpandasaspd

withopen('moviesample.htm','r',encoding='utf-8')asf:

text=f.read()

f.close()

PrA=[]

selector=etree.HTML(text)

infoList=selector.xpath('//*[@id="box_office_live_summary"]/div/table/tbody/tr')

#print(infoList)

forlineininfoList:

name=''

count=''

rate=''

prA=''

prB=''

prC=''

prD=''

prE=''

timePrice=''

predict=''

sumPrice=''

try:

name=line.xpath('./td[1]/a/text()')[0]

count=line.xpath('./td[2]/text()')[0].split('/')[0]

rate=line.xpath('./td[2]/text()')[0].split('/')[1]

prA=line.xpath('./td[3]/text()')[0]

prB=line.xpath('./td[4]/text()')[0]

prC=line.xpath('./td[5]/text()')[0]

prD=line.xpath('./td[6]/text()')[0]

prE=line.xpath('./td[7]/text()')[0]

timePrice=line.xpath('./td[8]/text()')[0]

predict=line.xpath('./td[9]/text()')[0]

sumPrice=line.xpath('./td[10]/text()')[0]

#print(sumPrice)

except:

continue

print(

'电影名称:{},总场次:{},占比:{},A影院票房:{},B影院票房:{},C影院票房:{},D影院票房:{},E影院票房:{},实时(不含预售):{},预计:{},累积:{}'.format(name,count,

rate,prA,

prB,prC,

prD,prE,

predict,

timePrice,

sumPrice))

PrA.append(prA)

infoDict=dict(

pra=PrA

)

df=pd.DataFrame(infoDict)

df1=df['pra'].apply(judge).reset_index()

col_mean=df1[['pra']].mean()

print(df1)任务2:【利用urllib库获取yahoo财经数据】网址:/q/cp?s=%5EIXIC要求:获取页面中的“代號、名稱、現價”数据。程序编写于下方'''

网址:/q/cp?s=%5EIXIC

要求:获取页面中的“代號、名稱、現價”数据。

'''

importrequests

fromlxmlimportetree

url='/q/cp?s=%5EIXIC'

header={

'user-agent':'Mozilla/5.0(Macintosh;IntelMacOSX10_14_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/79.0.3945.130Safari/537.36Edg/79.0.309.71'

}

rul=requests.get(url,header)

text=rul.text

selector=etree.HTML(text)

infoList=selector.xpath('//*[@id="Col1-0-Components-Proxy"]/section/section/div/table/tbody/tr')

forlineininfoList:

code=line.xpath('./td[1]/a/text()')[0]

name=line.xpath('./td[2]/text()')[0]

price=line.xpath('./td[3]/text()')[0]

print('代号:{},公司名称:{},市值:{}'.format(code,name,price))任务3:【求电影平均评分】样本文件为8.1.1节中的网页样本moviesample2.htm,内容为观众对电影的评分信息,分析样本文件,完成以下任务:调用函数获取网页中观众对某部电影的打分数据,并求出平均分。程序编写于下方'''

样本文件为8.1.1节中的网页样本moviesample2.htm,内容为观众对电影的评分信息,分析样本文件,完成以下任务:

调用函数获取网页中观众对某部电影的打分数据,并求出平均分。

'''

fromlxmlimportetree

withopen('moviesample2.html','r',encoding='utf-8')asf:

text=f.read()

f.close()

selector=etree.HTML(text)

infoList=selector.xpath('//*[@class="clearfix__r_c_"]/dd/div[@class="mod_short"]')

sums=0

count=0

forlineininfoList:

score=eval(line.xpath('.//span[@class="db_pointml6"]/text()')[0])

sums+=score

count+=1

print(score)

print('该电影的平均得分:{}'.format(sums/count))任务4:【数据清洗】利用Python对数据log.csv进行清洗,清理掉所有字段中为空的脏数据,保存在clean_data.csv文件中,并统计clean_data.csv文件的行数。程序编写于下方'''

利用Python对数据log.csv进行清洗,清理掉所有字段中为空的脏数据,保存在clean_data.csv文件中,并统计clean_data.csv文件的行数。

'''

importpandasaspd

df=pd.read_csv('log.csv',delimiter=',')

df=df.dropna()

#print(len(df))

df.to_csv('clean_data.csv')

print('保存完成,该文件共:{}行'.format(df.shape[0]))任务5:【数据分析与可视化展示】对数据log.csv进行分析,用折线图画出用户6月份到10月份,每日购买、点击、加入购物车、关注的变化趋势图。程序编写于下方'''

对数据log.csv进行分析,用折线图画出用户6月份到10月份,每日购买、点击、加入购物车、关注的变化趋势图。

行为,取值范围{0,1,2,3},0表示点击,1表示加入购物车,2表示购买,3表示关注商品

'''

importpandasaspd

frommatplotlibimportpyplotasplt

defprocessingTime(x):

#year=x.split('-')[0]

month=x.split('-')[1]

returnstr(int(month))

defprocessingDay(x):

ifint(x)<10:

return'0{}'.format(x)

else:

returnstr(x)

x_data=[]

y1=[]

y2=[]

y3=[]

y4=[]

df=pd.read_csv('clean_data.csv')

df=df[['年月','日','行为']]

df['日']=df['日'].astype('str')

df['月']=df['年月'].apply(processingTime)

df['日']=df['日'].apply(processingDay)

df['月']=df['月'].apply(processingDay)

df['日期']=df['月']+'-'+df['日']

df=df[['日期','行为','月']]

df2=df[(df['日期']>='06-01')&(df['日期']<'11-01')]

df2=df2.sort_values(by=['日期'])

df_gop=df2.groupby(['月','行为']).count().reset_index()

list1=df_gop.values.tolist()

#print(df_gop)

print(list1)

#print(df2)

foriinrange(0,len(list1),4):

x_data.append('{}月'.format(list1[i][0]))

forjinrange(0,len(list1),4):

y1.appen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论