一、研究背景
基于提供的代码片段和讨论,我们可以得出一个与网络抓取、数据处理和数据可视化相关的研究背景,该背景涉及到汽车行业。以下是研究背景的陈述:
"在迅速发展的汽车行业中,准确和及时的数据对各方利益相关者至关重要,包括消费者、制造商和市场分析师。网络抓取技术提供了一种从在线来源(如汽车网站)收集广泛信息的途径。然而,所收集的数据通常需要进行预处理和清洗,以删除无关或不完整的记录,确保其可靠性以供进一步分析。一旦数据经过清洗处理,可以应用数据可视化技术以获取有价值的洞察,并以易于访问的方式呈现信息。
本研究旨在利用网络抓取方法从汽车网站(如Autohome)收集关于汽车的全面数据,包括车型名称、价格范围和规格等详细信息。随后,清洗数据以消除不一致或缺失的值,提高其可用性。通过数据可视化,本研究旨在探索汽车数据集中的模式、趋势和关系,揭示影响汽车价格、市场细分和消费者偏好的因素。
在汽车领域应用网络抓取、数据处理和可视化技术不仅为消费者在购车决策中提供有价值的见解,还为行业分析师和制造商提供了做出明智战略选择的有力工具。了解汽车市场的动态对于在行业经历重大技术进步和消费者偏好转变的时代至关重要。"
该研究背景概述了网络抓取、数据处理和数据可视化在汽车领域的重要性,强调了它们对消费者和行业专业人士的潜在影响。它为一项旨在从在线汽车数据中提取可操作见解的研究奠定了基础。
-
研究目的 本研究的主要目的是通过结合网络抓取、数据处理和数据可视化技术,深入探索汽车行业的市场动态、价格趋势和消费者偏好,以提供有关汽车市场的有价值见解和信息。具体目标包括:
-
数据收集与清洗:使用网络抓取技术从汽车相关网站获取广泛的汽车信息,包括车型、价格、级别等。随后,对所收集的数据进行有效的清洗和预处理,以确保数据的准确性和一致性。
-
价格趋势分析:通过数据可视化,探索汽车价格与不同因素(例如车型、级别、价格区间)之间的关系和趋势。这有助于了解不同市场部分的价格变化,以及汽车价格在不同条件下的表现。
-
市场细分研究:基于抓取的数据,对汽车市场进行细分分析,包括不同价格区间内的车型数量和价格分布。这有助于识别潜在市场机会和市场细分的竞争格局。
-
消费者偏好洞察:通过数据可视化,分析消费者对不同汽车级别和价格区间的偏好。这可以为制造商提供有关产品定位和市场推广策略的有用信息。
-
洞察与策略建议:基于研究结果,提出关于汽车市场的实用见解和策略建议。这些建议可以用于制定产品定价策略、市场推广决策以及未来发展规划。
通过实现上述研究目标,本研究旨在为汽车行业的相关利益相关者提供深入了解市场动态的工具和信息,从而有助于更明智地制定业务战略和决策。
三、数据采集
3.1 网页分析
爬取的网站名称分别为:汽车之家
爬取内容:汽车之家价格性能
网页地址为:汽车之家|2024汽车报价大全|新能源汽车
网址规律:
https://car.autohome.com.cn/price/list-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-0_5-0-0-0-0-0-0-0-1 https://car.autohome.com.cn/diandongche/list-10_15-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-15_20-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-20_25-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-25_35-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-35_50-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-50_100-0-0-0-0-0-0-0-1
https://car.autohome.com.cn/diandongche/list-100_0-0-0-0-0-0-0-0-1
3.4 数据抓取过程
初始化CSV文件:首先,代码创建或打开一个名为"处理前的数据.csv"的文件,并写入标题行(包括'车名'、'级别'、'价格'和'价格区间')。
构建URLs列表:程序定义了一个包含多个URL的列表。这些URL指向汽车之家网站的不同页面,每个页面包含特定价格区间的汽车信息。
循环遍历页面:使用 for 循环遍历这些URL,j 从1到103,表示不同的页面编号。
发送HTTP请求:对于每个URL,程序使用requests.get发送HTTP GET请求。请求中包括一个自定义的User-Agent,用于模拟浏览器行为。
解析HTML内容:使用 BeautifulSoup 解析返回的HTML内容。
数据提取:对于每个页面,代码使用 BeautifulSoup的find和find_all方法提取车辆的名称、级别、价格等信息。提取的信息包括:车名:从特定的HTML元素中提取。级别:同样通过find定位并提取。价格:从页面中提取车辆的价格。价格区间:从URL中解析得到,反映了车辆所在的价格范围。
写入CSV文件:每提取一辆车的信息,就调用write_csv函数,将这些信息作为一行数据写入之前创建的CSV文件。
异常处理:使用try-except结构来捕获并处理循环过程中可能出现的任何异常(如网络请求失败、解析错误等),以确保程序的稳定运行。
继续处理:如果在处理某个URL时发生异常,程序会捕获异常并继续处理下一个URL,而不是完全停止运行。
3.5 遇到的问题及克服
网络请求失败:在请求网页时,可能会遇到网络问题或请求被网站限制的情况,导致请求失败。
克服方法:使用异常处理来捕获请求失败的情况,然后继续进行下一个请求,如你的代码中的except部分所示。可以将更多的错误处理逻辑添加到这部分,以确保代码不会因为请求失败而中断。
数据保存问题:代码中将数据写入CSV文件,如果文件已存在,会以追加模式打开,可能导致数据重复。
克服方法:在每次运行代码之前,你可以检查是否已经存在CSV文件,如果存在,可以选择删除或备份旧文件,然后创建一个新的CSV文件来保存数据。
频繁请求网站: 问题:频繁请求网站可能会引起反爬虫机制,导致IP被封禁或访问受限。
克服方法:可以使用User-Agent头部信息,模拟不同的用户访问,减少被识别为爬虫的风险。此外,还可以添加请求间隔,以避免频繁请求。
四、数据分析可视化
4.1 数据清洗
读取数据:使用pandas库的read_csv函数从CSV文件中读取数据。指定编码格式(如gbk和utf-8),确保正确解析字符。
去重:使用drop_duplicates方法去除重复行。这是清洗过程中常见的步骤,可以避免同一数据被多次计算,导致分析结果偏差。
删除无效数据:通过条件过滤删除包含"暂无报价"的行。使用布尔索引,确保数据集中的价格信息都是有效的,从而提高后续分析的准确性。
字符串处理:使用str.replace方法对多个列进行字符串处理,去除多余的标签(如"级别:"、"车身结构:"等),使数据更加简洁并便于后续处理。
拆分价格和续航里程:定义函数split_price和split_li,用于拆分价格范围和续航里程。通过检查字符串中是否含有"-"来判断价格是否为一个范围,并将其转换为浮点数。这样,之后的分析可以使用数值数据,而不是字符串。
分组统计:使用groupby方法对不同车型的数量和平均价格进行统计,得到按"级别"分类的油车和电车的数量及价格信息。此步骤有助于识别不同类别下的数据分布情况。
数据合并:通过pd.merge方法合并处理后的油车和电车数据,便于比较它们在不同级别上的表现和价格差异。
数据分布分析:利用pd.cut对价格和评分进行分箱,生成价格分布和评分分布的统计信息。这一过程使得数据的分布情况一目了然,有助于后续的数据可视化。
处理缺失和无效值:在处理评分和车身结构等列时,删除包含无效值的行,确保分析基于有效的数据。
4.2 数据可视化
当运行该代码后,它首先爬取了汽车信息,并将结果保存到CSV文件中。然后,它使用Pandas库读取CSV文件,并使用Matplotlib库进行数据可视化分析,生成了8个图表。
4.2.1. 油车与电车级别数量对比
绘制油车与电车级别数量对比的柱形图是数据可视化的重要一步,旨在直观展示两类车型在不同级别上的数量差异。首先,通过设置合适的图形尺寸,定义柱子的宽度和位置,使得图形既美观又清晰。使用plt.bar函数绘制油车和电车的数量,并通过调整位置确保柱子并排显示,从而便于比较。添加x轴和y轴标签,以及图表标题,使观众能迅速理解图形内容。通过旋转x轴刻度标签,避免了文本重叠的问题,进一步提升了可读性。最后,使用图例区分油车与电车的数量,确保信息传达的准确性。这样的柱形图不仅能直观地反映不同级别车型的受欢迎程度,还为市场分析提供了依据,帮助厂商和销售人员了解消费者的偏好,从而制定更为精准的市场策略。此外,长期跟踪此类对比图的变化,能够识别出市场趋势,例如电动车的逐渐崛起是否正在影响传统油车市场。这种可视化方法不仅增强了数据的呈现效果,还为决策支持提供了重要的参考依据,使企业在竞争中更具优势。通过对比,企业可以更好地把握市场动态,调整产品定位,实现可持续发展。
油车与电车的级别数量对比结果显示了不同车型在市场上的分布情况。从数据来看,中型SUV的油车数量(96)明显高于电车数量(71),反映出传统燃油车在这一细分市场的强势地位。与此同时,中型MPV和中型车的油车数量也占据优势,但电车数量逐渐增加,尤其在微卡和微型车级别,电车的数量明显超出油车,分别为77和35,这表明电车在小型市场的潜力。整体来看,尽管油车仍占据较高的市场份额,但电车在多个级别中逐渐缩小差距,反映出市场转向电动化的趋势,尤其在小型和微型车型中更为明显。
4.2.2 不同级别油车与电车的最低和最高价格对比折线图:
通过绘制不同级别油车与电车的最低和最高价格对比折线图,可以直观地展示两类车型在各个级别上的价格差异。首先,使用plt.plot绘制油车和电车的最低和最高价格,其中不同的颜色和标记帮助区分各类数据。图表标题和轴标签清晰地标识了图形的内容,便于理解。设置x轴刻度倾斜(rotation=45)确保标签不重叠,增强可读性。通过图例,观众可以轻松区分油车和电车的价格信息。该折线图的用处在于,它不仅揭示了各级别车型的价格趋势,还为消费者提供了选择依据。同时,制造商和销售人员可以利用此数据分析市场定位,识别定价策略的优化空间,从而更好地满足客户需求并应对竞争。
根据不同级别油车与电车的最低和最高价格折线图,可以分析出市场中各类型车型的价格区间和竞争态势。中型SUV的油车最低价格为26.30万,而电车的最低价格为25.54万,显示出电车在这一细分市场上具有一定的价格竞争力。相比之下,中大型SUV的油车价格(100.92万到133.22万)明显高于电车(48.69万到59.38万),反映出电车在高端市场的相对优势。此外,小型车和微型车的价格差距更小,油车价格更低,电车在这类车型中的吸引力也在增加。这些数据为消费者提供了清晰的价格参考,也为汽车制造商制定产品策略、调整定价提供了依据,帮助他们更好地满足不同市场需求。
4.2.3 电车油车价格分布
使用 matplotlib 库绘制了电车和油车的最低和最高价格分布的组合饼图,共分为四个子图。首先,分别获取油车最低、最高价格及电车最低、最高价格的数据,并存储在 df_price、df_price1、df_price2 和 df_price3 中。接着,使用 axs 变量创建一个 2x2 的子图布局,分别为每个子图绘制饼图,通过 autopct 参数显示百分比,利用不同的颜色映射(蓝色和绿色)来区分油车和电车。
这种组合饼图能够直观展示不同类型汽车价格的分布情况,有助于分析消费者偏好和市场趋势。通过清晰的视觉化展示,可以更好地理解油车与电车在价格上的差异,从而为决策提供数据支持,如制定销售策略、市场推广方案或消费者教育。这种可视化方式有助于各类利益相关者快速抓住重点,做出更明智的选择。
添加图片注释,不超过 140 字(可选)
分析电车与油车的价格分布时,可以看到各个价格区间的车辆数量差异显著。低于10万元和10万-20万元的区间占据了较大的市场份额,分别为121和252辆,表明经济型车辆的需求较高。中高价位(20万-50万元)的车型逐渐减少,尤其在40万-50万元区间,仅有21辆,这可能反映了消费者对于高价车型的谨慎态度。超过100万元的车型数量相对较少,显示出豪华车型的市场需求较低。总体来看,电车与油车在价格分布上存在明显差异,经济型电车的竞争力更强,市场潜力大。
4.2.4 电车和油车的评分分布组合环形图
通过 matplotlib 库绘制了电车和油车的评分分布的组合环形图,设计为两个子图。首先,评分数据分别存储在 ping1 和 ping3 中,表示油车和电车的评分分布。在每个子图中,使用 pie 方法绘制评分的环形图,通过 autopct 参数显示百分比,使用蓝色和绿色的色彩映射来区分油车和电车。中心圆形的添加使得图形看起来更为美观且更具可读性。
这种组合环形图直观地展示了不同类型汽车评分的分布情况,有助于消费者和厂商理解市场反馈。通过分析评分分布,可以揭示出消费者对电车和油车的偏好和满意度,指导汽车制造商进行产品改进和市场定位。环形图的清晰展示还能够帮助决策者快速抓住各类车型在用户心目中的地位,从而制定更加精准的营销策略和服务优化方案。
根据评分分布数据,油车的评分集中在 4.5 分至 4.6 分区间,共有 174 条评分,其次是 4.4 分至 4.5 分的 162 条,整体表现较为优秀。低于 4 分的评分仅有 19 条,显示出油车在消费者中的良好接受度。
相比之下,电车的评分分布较为分散,4.5 分至 4.6 分的评分为 137 条,4.4 分至 4.5 分为 92 条。电车在 4 分至 4.4 分区间也有 50 条评分,这表明部分消费者对电车的满意度较低。总体来看,油车的用户评分较为集中且高于电车,反映出消费者对油车的偏好和认可。
4.2.5 电车续航里程分布
利用 matplotlib 库绘制了电车续航里程的组合图,包括最低续航的饼图和最高续航的环形图。首先,从 df_price5 和 df_price7 中提取最低和最高续航里程的数据,分别存储在 labels_min、sizes_min 和 labels_max、sizes_max 中。接着,通过 ax[0].pie 绘制最低续航的饼图,显示各续航区间的比例;同时,使用 ax[1].pie 绘制最高续航的环形图,并在中心添加白色圆形以增强视觉效果。
这种组合图能够直观展示电车在不同续航里程区间的分布情况,帮助消费者理解不同车型的续航能力。最低续航的饼图有助于分析电车的基本续航性能,而最高续航的环形图则反映出电车在最佳条件下的表现。这对于消费者在购车决策时提供了有价值的信息,能够促使他们选择更符合自己需求的电动车型。同时,制造商也能借此数据优化产品设计和市场策略。
根据续航里程分布数据,电车的最低续航主要集中在 200公里至 300公里的区间,共有 163 条评分,显示出大多数电动车在这一范围内的表现较为稳定。其次是 100公里至 200公里的 108 条评分,较低续航的车辆数量也相对较多,意味着市场上仍存在一些低续航的车型。
在最高续航方面,超过 600公里的车型有 150 条评分,表明在最佳条件下,部分电车能够提供出色的续航表现。200公里至 300公里和 300公里至 400公里的评分也相对较高,分别为 122 条和 89 条。这显示出消费者对于电车的续航需求逐渐提高,制造商需要关注并提升电车在续航方面的表现,以满足市场对长续航车型的期望。
4.2.6 油车车身结构前十分析
对字典 dict_0 中的车身结构数据进行降序排序,并选择前十个结构进行可视化。首先,利用 sorted 函数和一个 lambda 表达式,按值对字典进行降序排序,从而获得车身结构的数量。接着,使用 dict 函数将前十个元素转化为新的字典 top_10。随后,通过 matplotlib 库绘制柱形图,展示前十种车身结构的分布情况。该图形以"车身结构"为横坐标,数量为纵坐标,采用天空蓝色的柱子来增强视觉效果。
这个柱形图的用处在于直观展示不同车身结构的数量对比,有助于分析市场需求和生产趋势。例如,制造商可以根据图表了解哪些结构在市场上更受欢迎,从而优化生产策略或研发新车型。此外,这种可视化方式也便于相关人员快速获取信息,支持决策过程,提升资源配置的效率。。
油车前十种车身结构的分布显示,SUV以303辆占据绝对优势,表明市场对这种多功能车型的强烈需求。其次是三厢车型和货车,数量分别为112辆和102辆,显示了传统轿车和商用车的稳定市场。MPV和客车的数量相对较低,分别为87辆和77辆,反映出家庭和公共交通的特定需求。皮卡(58辆)及硬顶跑车(27辆)则显示出特定消费群体的偏好。总体而言,SUV的主导地位和其他结构的多样性展示了市场的细分和消费者偏好的变化。
4.2.7 前十种电车充电时间分布
对字典 dict_1 中电车充电时间数据的降序排序,并绘制了前十种电车充电时间的柱形图。首先,使用 sorted 函数结合 lambda 表达式对字典进行排序,以充电时间为依据,生成一个新的降序字典 sorted_dict1。接着,从中提取前十个充电时间的元素,形成新的字典 top1_10。随后,利用 matplotlib 库绘制柱形图,横坐标为充电时间类型,纵坐标为对应的数量,柱子采用天空蓝色以增强视觉效果。
这个柱形图的用处在于帮助消费者和制造商直观地了解不同电车充电时间的分布情况。通过分析充电时间数据,消费者可以选择更适合自己需求的电动车型,提升使用效率。同时,制造商可据此评估市场趋势,优化产品设计和充电设施布局,以满足不断增长的电动车市场需求,推动电动出行的普及和便利化。
电车前十种充电时间的分布显示,快充0.5小时的充电模式最为普遍,达到142次,表明快速充电在市场上的广泛接受度。其次,慢充10小时的使用频率为48次,反映了用户对长时间充电的需求。其他快充模式如快充1小时(32次)和快充0.25小时(22次)也表现出相对较高的需求,而慢充8小时和慢充12小时分别为32次和30次,显示出多样化的充电选择。
这一数据揭示了消费者对快速充电的偏好,同时也表明传统慢充方式仍在市场中占据一席之地。通过对这些充电时间分布的分析,制造商可以更好地调整产品设计,以满足不同用户的充电需求,从而推动电动车的普及和使用效率提升。
4.2.8 油车变速箱分布
通过分析相关文本数据来展示变速箱相关词汇的频率。首先,文本数据通过遍历 data['变速箱、充电'] 列合并为一个字符串。接着,使用 jieba 库对文本进行分词处理,将中文文本切分为词语,并使用 Counter 统计每个词的出现频率,形成字典 dict_2。然后,构建词云对象 wc,设置字体路径、背景颜色、最大和最小字体大小以及最大词数等参数。最后,通过 generate_from_text 方法生成词云图,并利用 matplotlib 绘制和显示该图形。
词云图的用处在于直观展示变速箱相关词汇的分布情况,可以帮助分析用户对不同变速箱类型的关注点和偏好。通过观察词云,制造商和市场分析人员可以迅速识别出高频词汇,了解消费者需求和市场趋势,从而优化产品设计和营销策略。这种可视化方式为决策提供了重要的参考依据,提升了信息处理的效率。
油车变速箱的分布情况显示,一体变速箱以300次的出现频率居于首位,表明其在市场上的广泛应用和受欢迎程度。紧随其后的是手自一体变速箱(207次)和双离合变速箱(198次),这表明消费者对这类变速箱在驾驶体验和操控性能方面的认可。湿式和干式变速箱的数量相对较少,分别为173次和25次,显示出市场对这两种技术的接受度有限。此外,无级变速箱(116次)和自动变速箱(44次)也反映了不同消费者对驾驶便利性的需求。变速箱类型的多样性展示了消费者在动力传输技术上的选择偏好,为制造商提供了优化产品的方向,以满足市场对性能和舒适性的需求。
体会
- 数据采集的重要性:本项目中使用了网络抓取技术从汽车相关网站获取数据。这凸显了在研究和决策过程中获取准确、全面数据的重要性。网络抓取技术可以高效地获取大量信息,为深入分析提供了必要的基础。 数据清洗的必要性:数据清洗是确保分析结果准确性的关键一步。在本项目中,清洗操作有助于删除不完整或不相关的数据,提高了数据质量。这强调了在处理实际数据时,数据清洗是不可或缺的。 数据可视化的洞察力:数据可视化是将复杂数据转化为易于理解和传达的图形表示的强大工具。通过不同类型的图表和图形,可以更容易地发现趋势、模式和关系。在本项目中,数据可视化帮助我们深入了解汽车市场的多个方面,如价格趋势、市场细分和消费者偏好。 市场分析的价值:通过数据抓取、处理和可视化,我们可以获得关于汽车市场的有用见解。这种见解对于制定市场策略、产品定价和市场推广决策具有重要价值。研究项目突出了如何利用数据分析来指导业务战略的重要性。 技术的综合应用:本项目综合应用了多项技术,包括网络抓取、数据处理和数据可视化。这展示了在现代研究和分析中,将多个技术和工具结合使用的潜力,以更全面地探索问题并得出结论。 总的来说,本项目强调了在汽车行业中,数据和技术的综合应用可以为行业参与者提供有价值的见解和信息。这种方法也可以适用于其他行业,为研究和业务决策提供了有力的工具。