龙空技术网

Python实战:x帝汽车数据分析,最值得购买的车(爬虫+数据分析)

澄心读书人 246

前言:

而今同学们对“python程序设计题 寻找车辆”大概比较注意,大家都需要剖析一些“python程序设计题 寻找车辆”的相关内容。那么小编同时在网上搜集了一些关于“python程序设计题 寻找车辆””的相关知识,希望你们能喜欢,大家一起来学习一下吧!

澄心元素-数据分析专用

项目需求

到了换车的季节,不知道现在什么车值得购买,需要查看大量的信息,今天我们利用懂车帝app来分一下什么样的车值得购买。

获取相关数据(安全系数榜、城市榜、热门榜、销售榜)根据城市榜,分析该城市汽车销售情况,形成饼图根据城市榜与销售榜的占比,分析哪种车在该城市销售最好,形成柱状图根据安全系数、销售榜、总销售榜、最高价、最低价等信息,分析最适合买的车数据抓取

观察数据抓取的过程中,发现所有数据都保存在json的数据格式中,需要抓取对应json的地址,获取相应的数据。

rank_data_type : 排行榜的分类,实测榜:5/城市榜:64/热门榜:1/销量榜:11city_name : 城市名称offset : 页数,一页10条数据series_name : 汽车名称min_price : 最低销售价格max_price : 最高销售价格count : 每个json代表不同的内容,有销售量、总销售量、安全系数等。代码实例,抓取前40条车辆信息,保存xlsx格式

 def get_data_city():     series_name = []     min_price = []     max_price = []     count = []     for n in range(0,40,10):         url = f'哈尔滨&count=10&offset={n}&month=&new_energy_type=&rank_data_type=64&brand_id=&price=&manufacturer=&outter_detail_type=&nation=0'         r_resopnse = get(url=url,headers=headers).json()         for i in range(10):             series_name.append(r_resopnse['data']['list'][i]['series_name'])             min_price.append(r_resopnse['data']['list'][i]['min_price'])             max_price.append(r_resopnse['data']['list'][i]['max_price'])                 count.append(r_resopnse['data']['list'][i]['count'])     df = pd.DataFrame({'series_name':pd.Series(series_name),'min_price':pd.Series(min_price),'max_price':pd.Series(max_price),'count':pd.Series(count)})     df.to_excel('./car_city.xlsx',index=False)

抓取其他内容的代码类似,这里不再重复。

数据分析根据城市榜,分析该城市汽车销售情况,形成饼图

 df = pd.read_excel('./car_city.xlsx') fig = px.pie(df,values='count',names='series_name') fig.update_traces(textposition='inside',textinfo='percent+label') fig.show()
根据城市榜与销售榜的占比,分析哪种车在该城市销售最好,形成柱状图该车在本城市的销售量 / 该车占全国的销售量,对比看哪个车在本城市销售的最好。
 df2 = pd.read_excel('./car_city.xlsx') df3 = pd.read_excel('./car_sale.xlsx') # 将两个列表合并,相同的元素保留,how以第df2为基准,on以那个字段为基准,可以使多个 df4 = pd.merge(df2,df3,how='left',on=['series_name']).dropna() df4['p'] = df4['count'] / df4['count1'] * 100 fig2 = px.bar(df4,x=df4['series_name'],y=df4['p']) fig2
根据安全系数、销售榜、总销售榜、最高价、最低价等信息,分析最适合买的车,形成折线图按照安全系数排名,由高到低依次打分(打分按数量大,例如10个数据,第一名得10,第二名得9依次类推)按照销售量排名,由多到少依次打分。按照总销售量排名,由多到少依次打分。按照最低价、最高价排名,由低到高依次打分。所有分值相加,得到最终的价值,画出折线图,显示最适合买的车。
 df5 = pd.read_excel('./car_safe.xlsx') df6 = pd.merge(df4,df5,how='left',on=['series_name']).dropna() df9 = df6.sort_values(by='count',ascending=False) df9['count_p'] = [i for i in range(len(df9),0,-1)] df9 = df9.sort_values(by='count1',ascending=False) df9['count1_p'] = [i for i in range(len(df9),0,-1)] df9 = df9.sort_values(by='min_price',ascending=True) df9['min_price_p'] = [i for i in range(len(df9),0,-1)] df9 = df9.sort_values(by='max_price',ascending=True) df9['max_price_p'] = [i for i in range(len(df9),0,-1)] df9 = df9.sort_values(by='data_value',ascending=False) df9['data_value_p'] = [i for i in range(len(df9),0,-1)] df9['all'] = df9['count_p'] + df9['count1_p'] + df9['data_value_p'] + df9['min_price_p'] + df9['max_price_p'] fig3 = px.line(df9,x=df9['series_name'],y=df9['all']) fig3
项目难点将两个pd合并,相同的元素保留,不同的元素叠加,形成新的pd

df4 = pd.merge(df2,df3,how='left',on=['series_name']).dropna()

pd的排序问题,按列的大小排序

df9 = df6.sort_values(by='count',ascending=False)

by:按照df6的那个列排序ascending:Flase由大到小 / True由小到大

标签: #python程序设计题 寻找车辆