• Python平板电脑数据分析-课程大作业-部分源码


    课程名称:Python语言与数据分析

    课 程 报告

    项目名称     平板电脑数据集分析       

    班    级                        

    学    号                       

    姓    名         刘建杰               

    任课教师                        

    开课学期:2021 2022 学年第 2 学期

    完成时间: 2022     6   8 

    《平板电脑》数据分析报告

    目录

    目录

    1 概述... 1

    2数据描述... 1

    2.1数据来源及提取... 1

    2.2数据特点、包含字段... 2

    2.3数据处理... 2

    2.3.1查看是否含有缺失值... 2

    2.3.2处理重复值... 3

    2.3.3删除不需要的列... 3

    3 数据分析内容... 3

    3.1平板电脑每年上市的数量... 3

    3.2各公司平板电脑数量规模对比... 3

    3.3平板电脑各个价位的数量... 4

    3.4平板电脑价格与评价关系... 4

    3.5平板电脑的配置与价格关系... 4

    3.5.1屏幕尺寸与价格... 4

    3.5.2屏幕分辨率与价格... 4

    3.5.3存储器容量与价格... 4

    4 数据分析图表... 5

    4.1平板电脑每年上市的数量... 5

    4.2各公司平板电脑数量规模对比... 5

    4.3平板电脑各个价位的数量... 6

    4.4平板电脑价格与评价关系... 6

    4.5平板电脑的配置与价格关系... 7

    4.5.1屏幕尺寸与价格... 7

    4.5.2屏幕分辨率与价格... 8

    4.5.3存储器容量与价格... 9

    5 数据分析结果... 9

    5.1平板电脑每年上市的数量... 9

    5.2各公司平板电脑数量规模对比... 10

    5.3平板电脑各个价位的数量... 10

    5.4平板电脑价格与评价关系... 10

    5.5平板电脑的配置与价格关系... 10

    5.5.1 屏幕尺寸与价格... 10

    5.5.2屏幕分辨率与价格... 11

    5.5.3存储器容量与价格... 11

    6 总结... 11

    附录-数据分析代码... 11

    1 概述

             平板电脑也叫便携式电脑是一种小型、方便携带的个人电脑,以触摸屏作为基本的输入设备,它最大特点是,触摸屏和手写识别输入功能,以及强大的笔输入识别、语音识别、手势识别能力,且具有移动性。随着科技的进步,信息化的提高,平板电脑在我们日常生活中越来越常见,其功能与作用越来越接近电脑与手机,能提高我们的生产力和工作效率,本文的目的是对于我们能快速对平板电脑的发展与其各种参数有个宏观了解,了解平板电脑的价格有哪些因素影响,以及提供新手选购平板电脑选购思路和参考

    2数据描述

    2.1数据来源及提取

    本数据分析报告内的平板电脑数据来源于中关村在线网站【平板电脑】平板电脑报价及图片大全-ZOL中关村在线

    自己编写爬虫程序,分析网址数据页构成,思考如何编写增量爬虫逻辑,利用request请求获取html,再用beautifulsoup解析html获取逐个字段,最终成功爬取平板电脑的各项数据参数并保存csv文件到本地。

    2.2数据特点、包含字段

    从中关村网站共爬取1417条数据,17个关键参数的字段。

    17个平板电脑数据集参数的字段分别为公司名称、产品名称、上市年份、上市月份、价格(元)、阶段、运行内存(GB)、存储容量(GB)、操作系统、处理器型号、屏幕尺寸(英寸)、屏幕分辨率、重量(g)、评论人数、评分、电池类型、电池容量

    2.3数据处理

    2.3.1查看是否含有缺失值

    使用Pandas将csv数据导入后,使用pandas库中dateframe的info()函数,数据集信息如下

    因网站存储的平板电脑信息不是很全,导致有的字段不为空的行数小于1417,存在空值的字段,由于含有空值字段比较分散,而且数据集量并不是很大,不能采用一刀切删除操作,于是采用等数据分析具体内容字段时,再删除空值的行或者不纳入数据分析的范围。

    2.3.2处理重复值

    使用duplicated()函数清除重复的行,数据集良好,未有重复的行

    2.3.3删除不需要的列

    爬取的字段有17个,字段较多,而有些个字段与本次数据分析内容暂时无关,所以删除数据表中的上市月份、电池容量、电池类型等无关字段

    3 数据分析内容

    3.1平板电脑每年上市的数量

    通过分析每年上市的数量有利于我们对平板电脑的发展趋势与兴起有个宏观了解

    3.2各公司平板电脑数量规模对比

    通过分析各公司平板电脑数量,可以体现出市场的多样性,市场中哪几个品牌占有市场最多的份额,能让我们消费者普通人能更好的选购大品牌

    3.3平板电脑各个价位的数量

    通过分析不同价位的数量可以得出平板电脑什么价位数量最多,证明这个价位最亲民,最适合我们普通大众的价位

    3.4平板电脑价格与评价关系

    通过分析电脑价格与评价的关系,可以验证平板电脑领域是否与我们所熟知的那样,评价与价格正比,评价随价格的提升而提升

    3.5平板电脑的配置与价格关系

    简单从3个电脑配置方面分析配置与价格之间的关系,有助于我们了解平板电脑价格因什么而增长,以及什么配置影响因素最大,为我们解释为什么不同平板电脑配置导致价格差异较大。

    3.5.1屏幕尺寸与价格

    分析屏幕尺寸的占比与屏幕尺寸是否对价格有影响

    3.5.2屏幕分辨率与价格

    分析屏幕分辨率的占比与屏幕分辨率是否对价格有影响

    3.5.3存储器容量与价格

    分析存储器容量的占比与存储器容量是否对价格有影响

    4 数据分析图表

    4.1平板电脑每年上市的数量

    4.2各公司平板电脑数量规模对比

    4.3平板电脑各个价位的数量

    4.4平板电脑价格与评价关系

    4.5平板电脑的配置与价格关系

    4.5.1屏幕尺寸与价格

    4.5.2屏幕分辨率与价格

    4.5.3存储器容量与价格

      

    5 数据分析结果

    5.1平板电脑每年上市的数量

    通过4.1的折线图可以清晰的看出

    1. 2010年是平板电脑诞生,正式进入市场的一年。在网上搜索相关资料后,2010年确实是平板电脑正式诞生的年份,是苹果公司生产的苹果ipad一代,使得平板电脑开始慢慢进入我们生活。
    2. 2012年是平板电脑上市数量剧增开始的一年,可以猜测平板电脑市场很大,许多公司都进行此产品的研发。
    3. 2013年平板电脑上市数量最高,而此后每年的上市数量越来越少,可以推测应该是各公司对平板电脑的提升要求较高,为了与同行竞争,而将重心放在核心技术上,将以更好的产品竞争市场而不是以上市数量。

    5.2各公司平板电脑数量规模对比

    通过4.2的横向柱形图可以得出

    1. 苹果公司拥有平板电脑的产品数量最多,是平板电脑的龙头企业。
    2. 苹果、台电、联想、酷比魔方、华为、三星公司平板电脑产品数量都挺多,为平板电脑市场作出主要贡献
    3. 从图中可看出前6家公司拥有的产品数量虽然有差异但差距没有很大,可以得出市场并没有被垄断,使得平板电脑市场在产品的创新领域有良好的竞争氛围,有利于市场的创新发展。

    5.3平板电脑各个价位的数量

    通过4.3的竖向柱形图可以获知

    1000-2000价位范围内的平板电脑数量最多,说明这个价格最亲民,最普及大众,可以推测各公司的对这价位都投入了精力,为了获得许多大众的青睐打出品牌知名度,毕竟我们普通人都希望有较便宜且好用的电脑。

    5.4平板电脑价格与评价关系

    通过4.4的箱型图分析得知

    1. 通过图中各箱子的q2中位数,可以看出随着价格范围增长,中位数也在提高,验证了价格与评价成正比的关系,也给我们提供选购指南,纠结价格稍低还是稍高点的,最好选购价格稍高点的平板电脑。
    2. 1000价位以下的平板电脑,箱子图中的q2中位数最低,说明低价的平板电脑还是不尽人意,我们应慎重购买
    3. 0-1000与1000-2000价格范围的上下端(须)很长,可以得出即使同样的产品在每个人手中,不同人有着不同的评价与看法,说明不同人的主观性与个体的差异

    5.5平板电脑的配置与价格关系

    5.5.1 屏幕尺寸与价格

    屏幕的尺寸大小是平板电脑组成中比较重要的部分,尺寸的大小关系着我们日常使用,影音、小说等都需要在屏幕上展现出来。分析4.5.1的箱型图,根据q2中位数可以得出,随着尺寸的增大,价格普通也在提高,说明屏幕尺寸与价格是成正比的,也侧面反映企业若提高屏幕尺寸大小,平板电脑的制作成本也会增加,所以屏幕尺寸是影响价格是重要因素

    5.5.2屏幕分辨率与价格

    屏幕分辨率是指纵横向上的像素点数,屏幕分辨率确定计算机屏幕上显示多少信息,所以不言而喻,分辨率是平板电脑组成中较重要的部分。通过分析4.5.2的箱型图,根据q2中位数可以得出,随着分辨率的增大,价格也在增长,但是增长速度较慢,不过也能反映出屏幕分辨率是影响价格的重要因素

    5.5.3存储器容量与价格

    这里分析的存储器容量是外存储器,外存用来存储程序、数据以及各种软件资源,毫无疑问,存储器容量是平板电脑组成的重要部分。分析4.5.3的折线图,根据折线的形状,可以清晰的看出,存储容量增长时,平均价格也在增长,而且增长速度很快,由此可断定,企业生产平板电脑存储器容量的增加,其成本会增加很多,所以存储器容量是影响平板电脑的一个非常重要的因素。

    6 总结

    1.整个数据分析过程

    首先,做此报告前,需要有平板电脑的数据集,但是我搜索了阿里云天池以及和鲸社区都没有找到相关的数据集,无奈之下只好自己写爬虫爬取数据集,本想爬京东的数据,想着京东的平板电脑数据信息比较齐全和权威,写了些相关爬取京东数据代码后才觉得并不合适,京东列出的平板电脑数据只是各个店铺上架的销售平板电脑的数据,会有重复值以及其它原因,做起来会非常复杂,遂放弃,后想起有中关村网站,这网站将平板电脑的数据分门别类,而且展示齐全,很符合我想要爬的数据,于是开始写爬虫代码爬取。由于爬虫库(request、re、beautifulsoup)代码并不熟悉,代码写得较困难,需要边翻书和查资料才能勉勉强强写出来。

    然后,有了数据集csv文件后,需要使用pandas读取处理,再使用matplotlib库来绘图,pandas库并不是很熟悉,刚接触不久,matplotlib库更不用说了,各种函数与参数很难有个大概宏观映像,只好上matplotlib官网看例子,再上CSDN搜索相关matplotlib教程,再一步一步调试出来想要的图形效果,写代码绘图分析花费挺多时间,需要找到合适的图形来匹配分析的数据集,有时找的图形不合适又得换掉,综合对比哪个图好一点才决定最终图表。绘好图后,需要写文档了,但是各个小点的写法并没有思路,于是查看众多老师发的学长学姐的文档以及在和鲸社区相关项目后,才有思路开始着手写。

    2.收获

    了解熟悉了python爬虫代码的编写和思路,更多的是熟悉了pandas、numpy、matplotlib这三个库用来做数据分析的使用,增加了自己站在大数据下分析事物。还有增加自己搜索资料独立完成任务的能力,以及巩固这一学期python的各个知识点。

    3.体会

    做python的数据分析更多的是得动手实践才能加深理解和印象。python用来爬虫、数据分析都很有用,适合当自己的小工具。另外学python这段时间虽然比较艰苦,很短的时间得学很多知识,虽然累但是收获颇丰。

    附录-数据分析代码

    爬虫代码和数据集文件等CSDN恢复资源下载再发出链接来

    1. 数据分析代码
    1. import matplotlib.pyplot as plt
    2. import pandas as pd
    3. import numpy as np
    4. df = pd.read_csv('平板电脑.csv', encoding='gbk')
    5. print(df.info())# 基本信息
    6. print('重复值:', df.duplicated().sum())# 处理重复值
    7. ydf = df.drop(['上市月份','电池类型','电池容量', '操作系统', '处理器型号'], axis=1)# 删除不需要的列
    8. print(ydf)
    9. # 设置图像样式
    10. font = {'family':'SimHei',
    11.         'weight':'bold',
    12.         'size':'18'}
    13. plt.rc('font', **font)
    14. plt.rc('axes', unicode_minus=False)
    15. # 开始根据要分析的内容绘图
    16. # 1.各年份公司产品折线图1
    17. plt.figure()
    18. ndf = ydf.copy()
    19. yearcts = ndf['上市年份'].value_counts().sort_index(axis=0)
    20. x = yearcts.index
    21. y = yearcts.values
    22. plt.plot(x, y, linewidth=1, color="orange", marker="o",label="Mean value")
    23. for i in range(len(yearcts)):#设置每个点上的数值
    24.         plt.text(x[i], y[i], y[i], fontsize=12, color="black", style="italic", weight="light", verticalalignment='center',horizontalalignment='right')
    25. plt.title('各年份上市平板电脑的数量')
    26. plt.xlabel("年份")
    27. plt.ylabel("数量")
    28. # 2.各公司平板电脑数量规模对比
    29. plt.figure(dpi=80)
    30. ndf = ydf.copy()
    31. companyproct = ndf['公司名称'].value_counts()[0:20].sort_values(axis=0)
    32. x = companyproct.index
    33. y = companyproct.values
    34. rects1 = plt.barh(range(len(x)), y, height=0.4, color='orange'# 绘制横向的柱状图,width就需要改为height
    35. plt.yticks(range(len(y)), x)
    36. plt.grid(alpha=0.5# 加格网,透明度设置为0.3
    37. plt.title("各公司产品数量规模", size=18)
    38. plt.bar_label(rects1, padding=3) # 设置bar的值
    39. # 3.平板电脑各个价位的数量
    40. plt.figure()
    41. ndf = ydf.copy()
    42. pricebins = [0,1000,2000,3000,4000,5000,10000,50000]
    43. ndf["price_arrange"] = pd.cut(x=ndf["价格(元)"],bins=pricebins)
    44. pricebinct = ndf["price_arrange"].value_counts().sort_index(axis=0)
    45. x = np.array(['(0,1000)','(1000,2000)','(2000,3000)','(3000,4000)','(4000,5000)','(5000,10000)','(10000,50000)'])
    46. y = pricebinct
    47. rects = plt.bar(x, y, color=['orange'])
    48. plt.bar_label(rects, padding=3)
    49. plt.title('平板电脑各个价位的数量')
    50. plt.xlabel("价格范围")
    51. plt.ylabel("数量")
    52. #4.价格与评价关系箱型图
    53. ndf = ydf.copy()
    54. ndf = ndf[(ndf['评分'] > 0)]# 过滤掉0分的行
    55. pricebins = [0,1000,2000,3000,4000,5000,10000,50000]
    56. ndf["price_arrange"] = pd.cut(x = ndf["价格(元)"], bins=pricebins)
    57. ndf.boxplot(column='评分', by='price_arrange',grid = True,showmeans=True,patch_artist=True, boxprops = {'color':'black','facecolor':'lightblue'},whiskerprops={'linestyle':'-','color':'black'})
    58. plt.title('价格与评价关系箱型图')
    59. plt.xlabel('价格范围')
    60. plt.ylabel('评分')
    61. #5.1屏幕尺寸对价格的影响
    62. #5.1.1屏幕尺寸占比图
    63. plt.figure()
    64. ndf = ydf.copy()
    65. ndf = ndf.dropna(subset=['屏幕尺寸(英寸)'])
    66. ccct = df['屏幕尺寸(英寸)'].value_counts().sort_values(axis=0,ascending=False)
    67. rate = ccct.values[0:10]
    68. labels = ccct.index[0:10]
    69. plt.pie(rate, labels=labels,autopct='%1.1f%%',shadow=False)
    70. plt.axis('equal')
    71. plt.legend()
    72. plt.title('主要屏幕尺寸占比',fontsize=20)
    73. #5.1,2屏幕尺寸对价格的影响箱型图
    74. ndf = ydf.copy()
    75. ndf = ndf[(ndf['价格(元)'] < 10000)].dropna(subset=['屏幕尺寸(英寸)'])
    76. ccbins = [3,6,9,12,15,18.5]
    77. ndf["chicun_arrange"] = pd.cut(x = ndf["屏幕尺寸(英寸)"], bins=ccbins)
    78. # ndf.boxplot(column='价格(元)', by='chicun_arrange',grid = True,showmeans=True,patch_artist=True,sym='-')
    79. ndf.boxplot(column='价格(元)', by='chicun_arrange',grid = True,showmeans=True,patch_artist=True, boxprops = {'color':'black','facecolor':'#FFCC99'},whiskerprops={'linestyle':'-','color':'black'})
    80. plt.title('屏幕尺寸与价格关系箱型图')
    81. plt.xlabel('屏幕尺寸')
    82. plt.ylabel('价格(元)')
    83. #5.2屏幕分辨率对价格的影响
    84. #5.2.1屏幕分辨率占比图
    85. plt.figure()
    86. ndf = ydf.copy()
    87. ndf = ndf.dropna(subset=['屏幕分辨率'])
    88. pmfblct = ndf['屏幕分辨率'].value_counts().sort_values(axis=0,ascending=False)
    89. rate = pmfblct.values[0:10]
    90. labels = pmfblct.index[0:10]
    91. plt.pie(rate, labels=labels,autopct='%1.1f%%',shadow=False)
    92. plt.axis('equal')
    93. plt.legend()
    94. plt.title('主要屏幕分辨率占比',fontsize=20)
    95. #5.2.2屏幕分辨率对价格影响的箱型图
    96. plt.figure()
    97. ndf = ydf.copy()
    98. ndf = ndf[(ndf['价格(元)'] < 10000)]
    99. ndf = ndf.dropna(subset=['屏幕分辨率']).sort_values(by=['屏幕分辨率'])
    100. fblbins = ['1024x600', '1024x768', '1280x800', '1920x1080', '1920x1200', '2000x1200', '2048x1536', '2560x1600']
    101. v1=[]
    102. for i in fblbins:
    103.     v1.append(ndf[ndf['屏幕分辨率']==i]['价格(元)'].values)
    104. plt.boxplot(v1, showmeans=True, labels=fblbins)
    105. plt.title('屏幕分辨率与价格关系箱型图')
    106. plt.xlabel('屏幕分辨率')
    107. plt.ylabel('价格(元)')
    108. #5.3存储器容量对价格影响
    109. #5.3.1主要存储器容量占比
    110. plt.figure()
    111. ndf = ydf.copy()
    112. ndf = ndf.dropna(subset=['存储容量(GB)'])
    113. ndf['存储容量(GB)'] = ndf['存储容量(GB)'].astype(int)
    114. ccrlct = (ndf['存储容量(GB)'].value_counts())
    115. rate = ccrlct.values[0:10]
    116. labels = ccrlct.index[0:10]
    117. plt.pie(rate, labels=labels,autopct='%1.1f%%',shadow=False)
    118. plt.axis('equal')
    119. plt.legend()
    120. plt.title('主要存储器容量占比',fontsize=20)
    121. #5.3.2存储器容量平均价格的折线图
    122. plt.figure()
    123. ndf = ydf.copy()
    124. ndf = ndf[(df['价格(元)'] < 30000) & (df['存储容量(GB)'] >= 8)]
    125. ndf = ndf.dropna(subset=['存储容量(GB)'])
    126. ndf = ndf.groupby(['存储容量(GB)'])['价格(元)'].mean()
    127. x = ndf.index
    128. y = ndf.values.astype(int)
    129. plt.plot(x, y, linewidth=1, color="orange", marker="o",label="Mean value")
    130. for i in range(len(ndf)):#设置每个点上的数值
    131.         plt.text(x[i], y[i], y[i], fontsize=12, color="black", style="italic", weight="light", verticalalignment='center',horizontalalignment='right')
    132. plt.title('存储器容量平均价格的折线图')
    133. plt.xlabel("存储器容量(GB)")
    134. plt.ylabel("平均价格(元)")
    135. plt.show()

  • 相关阅读:
    JSON Web Tokens (JWT) 在线解密工具
    推荐一款支持异步批量下载图片的chrome插件——图片助手(ImageAssistant) 批量图片下载器
    【vue3学习笔记】compositionAPI的优势;Fragment组件;Teleport组件
    代码随想录算法训练营第四十二天| 494. 目标和、474. 一和零 、52. 携带研究材料(第七期模拟笔试)、518. 零钱兑换 II
    原生HTML Select下拉多选 + vue
    向量数据库Transwarp Hippo1.1多个新特性升级,帮助用户实现降本增效
    Docker 学习总结(78)—— Docker Rootless 让你的容器更安全
    CSS 3之美化表格样式
    新的类功能 --- c++11
    MFC Windows 程序设计[310]之混搭个性按钮组群(附源码)
  • 原文地址:https://blog.csdn.net/qq_34060370/article/details/126171383