推荐用Jupyter

爬取某车网站的部分数据

# 爬取二手车某网站的数据
#Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库
from bs4 import BeautifulSoup
# 用于网络请求
import urllib.request
#操作csv文件
import csv
#指定编码
import codecs#添加newline可以避免一行之后的空格,这样需要在python3环境下运行
csvfile= open(r'D:\360MoveData\Users\lenovo\Desktop\爬取演示.csv', 'w' , newline='',encoding='gb18030')
#指定逗号作为分隔符,并且指定quote方式为引用。这意味着读的时候都认为内容是被默认引用符(")包围的
writer=csv.writer(csvfile,delimiter=',',quoting = csv.QUOTE_ALL)
keys=['车型','信息','价格']
writer.writerow(keys)for page in range(2,100):# 目标网址url = '因为官方版权问题,此处url不可显示,可以在评论区私聊我'#   发送请求#   urllib.request 是一个用于获取 URL (统一资源定位地址)的 Python 模块f=urllib.request.urlopen(url)resp=f.read()# print(resp)  # 203# 网页源代码 (文本显示)# print(resp.text)# 用BeautifulSoup解析数据  python3 必须传入参数二'html.parser' 得到一个对象,接下来获取对象的相关属性html = BeautifulSoup(resp, 'html.parser',from_encoding='gbk')#解析返回的数据lis=html.findAll(class_='cards-bottom')for li in lis:carType=li.h4.textcarInfo=li.p.textcarPrice=li.s.textprint(carType)print(carInfo)print(carPrice)oneCar=[carType,carInfo,carPrice]writer.writerow(oneCar)csvfile.close()

爬取出来的csv文件用excel打开就是这样的

数据分析
原始数据
数据清洗:填充或删除缺失数据,删除重复值,数据类型转换,字符串处理,删掉异常数据,数据替换
数据分析
数据结论

进行数据分析

准备工作

#as  别名
import numpy as np
#处理csv的文件
import pandas as pd
#数据分析,画图的库
import matplotlib.pyplot as plt
#可视化工具
import seaborn as sns#解决中文问题  matplotlib.pypolt不支持中文
plt.rcParams['font.sans-serif']=['SimHei']
#解决负号显示
plt.rcParams['axes.unicode_minus']=False
#%matplotlb inline #plt.show   直接显示生产的图表 在这个文档写的代码就不用加了
import pandas as pd#原始数据
#加r和不加''r是有区别的                            \t  相当于按了tab键
#'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子
#另外;字符串赋值的时候 前面加'r'可以防止字符串在使用的时候不被转义 原理是在转义字符前加'\'
#UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
pd.set_option('display.max_rows',None)
data=pd.read_csv(r'D:\360MoveData\Users\lenovo\Desktop\爬取演示.csv',encoding='gb18030')
data


这就是刚刚爬取的数据,舒服,一下出来数据,笔者卡了好久

#数据清洗 删除价格为NaN类型的数据
data.drop([8,48,54],inplace=True) #参数1  删除的行号   参数2  表示在原始数据上删除
data #再打印一下数据#删除原价为 NaN 缺失值的数据
data.dropna(subset=['价格'],inplace=True)
#删除价格为 已涨价xx元  已降价xx元的数据
data=data[ ~data['价格'].str.contains('已')]  #删除某列包含特殊字符的行
data


值为NaN的值就删了,大数据处理,忽略小细节

data.head(10) #默认5行,这里显示10行

#缺失值  检测当前的数据有没有缺失值
data.isnull()
print('当前缺失值为')
(data.isnull()).sum()

#重复值的检测
data.duplicated()

#重复值数目
data.duplicated().sum()


后面的参数代表,在本对象上删除,不是形式上的删除

#删除重复值
data.drop_duplicates(inplace=True)
#查看剩余所有数据的个数
len(data)

#查看列名为 价格 的列包含 万 的数据的个数
data.价格.str.contains('万').sum()

# 字符串处理
# 把价格 列 的数据封装到map里一次执行这个替换方法 如16.77万转换成16.77 再通过float转换成浮点数据
data['价格']=data.价格.map(lambda x:float(x.replace('万','')))
data.head(10)

#按价格升序
data.sort_values('价格')

#按价格降序
data.sort_values('价格',ascending=False)

数据分析

价格的分析

#定义分类标准   分析各区间的数据
bins=[0,30,60,90,120,150,180]
pd.cut(data.价格,bins).value_counts()

#画成直方图
pd.cut(data.价格,bins).value_counts().plot.bar()

#画成直方图   rot 把x轴的数据进行旋转 ,如旋转水平角度为0度
pd.cut(data.价格,bins).value_counts().plot.bar(rot=0)

#直方图,x轴水平,并加上标题
pd.cut(data.价格,bins).value_counts().plot.bar(rot=0,title='价格分析')

品牌的分析

data['车型']=data.车型.map(lambda x:x.split(' ')[0])
data

data.车型.value_counts()

#根据前十个画直方图
data.车型.value_counts()[:10].plot.barh()

#分组   对所以车辆按地点分组 显示该组的平均价格
data.groupby(['车型'])['价格'].mean()

# 类型转换
#data['列名']=data.列名.map(lambda x:目标数据类型(x))
#重新排列索引,并删除原索引
data=data.reset_index(drop=True)
data

top10=['宝马5系','奔驰C级','宝马3系','奥迪A4L','宝来','高尔夫','天籁','轩逸','宝马X1','标致307']
top10

饼图

top10=['宝马5系','奔驰C级','宝马3系','奥迪A4L','宝来','高尔夫','天籁','轩逸','宝马X1','标致307']
data_top10=data[data['车型'].isin(top10)]
print('Top10车型占总车型的比例: %.2f%%'%((data_top10.shape[0]/data.shape[0])*100))
#画饼图
plt.axes(aspect='equal') #将横轴,纵轴坐标标准化处理,保证饼图是一个正圆,否则为椭圆
plt.pie(data_top10['车型'].value_counts(),explode=[0.2,0.2,0.2,0,0,0,0,0,0,0],startangle=0,labels=top10,autopct='%.2f%%',radius=2)
# radus半径


这里。很容易出错,因为数据是动态获取,前十的车型可能会变,如何把上面的前十数据获取到一个动态的数组里,笔者也不知道。
尽力了。

别问我参数,我也不知道,,,也许有人会问
这些数据怎么不分开,我也不会,,我知道用正则,分割其他还好,但一遇到 / 怎么分都不行,去班群里问也没人回我,5555
看了的感觉有用的小伙伴点个赞哈,涛涛谢过。

==时2022/11/6,补充

饼图绘制,需要把前十数据获取,手动放到下列数组,再运行

不是我不想把那列分开,直接获取数组第一列,组成top10数组,我不会,百度查看发现serial类型数据是没有列索引的,如果有小伙伴有方法可以补充在评论区。

python爬取数据+数据分析相关推荐

  1. python爬取数据时报错:`aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sea

    python爬取数据时报错:aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host sear ...

  2. Python:爬取数据出现response.status_code为403解决方法

    目录 前言 1. 原理 2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问.服务器接收到这个信息,理应返回了这个403的信息 在前一块的代 ...

  3. Python爬取数据存储到本地文本文件

    前面说过Python爬取的数据可以存储到文件.关系型数据库.非关系型数据库.前面两篇文章没看的,可快速戳这里查看!https://mp.weixin.qq.com/s/A-qry4r3ymuCLXLB ...

  4. 不知道天气咋样?一起用Python爬取天气数据分析告诉你

    前言 今天我们分享一个小案例,获取天气数据,进行可视化分析,带你直观了解天气情况! 一.核心功能设计 总体来说,我们需要先对中国天气网中的天气数据进行爬取,保存为csv文件,并将这些数据进行可视化分析 ...

  5. Python爬取数据:翻页操作

    Python爬取视频在上一章已经实现,如果爬取数据的时候发现不止一页数据,而是很多页数据的时候,我们就需要爬虫自行翻页操作继续获取另一页的数据.那么如何实现的翻页操作是本章主要描述内容. 该文章爬取数 ...

  6. 如何用python爬取数据_如何使用python爬取知乎数据并做简单分析

    原标题:如何使用python爬取知乎数据并做简单分析 一.使用的技术栈: 爬虫:python27 +requests+json+bs4+time 分析工具: ELK套件 开发工具:pycharm 数据 ...

  7. python 爬取数据还要下载scrapy吗_python网络爬虫之Scrapy

    本文分享的大体框架包含以下三部分 (1)首先介绍html网页,用来解析html网页的工具xpath (2)介绍python中能够进行网络爬虫的库(requests,lxml,scrapy等) (3)从 ...

  8. python爬取数据热点词生成词云

    这是当时在中国mooc学 用python玩转数据 时,写的一个小demo. 程序实现步骤 1.从某一网站爬取数据,比如我是在豆瓣爬取的书评 利用Requests库的get()爬取网页 使用Beatif ...

  9. Python爬取数据并写入MySQL

    关于爬虫爬取数据并存入MySQL数据库(以东方财富网上的股票数据为例,网页:深南电A(000037)资金流向 _ 数据中心 _ 东方财富网) 第一步,创建数据库中的数据表 import request ...

  10. python爬取数据保存为txt格式

    #encoding:'utf-8' import urllib.request from bs4 import BeautifulSoup import os import time #找到网址 de ...

最新文章

  1. DHCP在企业网中的应用
  2. 【机器学习PAI实战】—— 玩转人工智能之综述
  3. 关于JTAG——韦东山嵌入式Linux视频学习笔记02
  4. Java访问修饰符(访问控制符)
  5. 艾伟_转载:WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问
  6. 纯干货,Spring-data-jpa详解,全方位介绍。
  7. 计算机语言学 自然语言处理程序,利用知网进行(计算机)自然语言处理
  8. 2017.3.13 木棍分割 思考记录
  9. 计算机主机拆解,计算机硬件系统及主机拆解..ppt
  10. php连接数据库配置优化,小蚂蚁学习mysql性能优化(9)--操作系统配置优化--mysql配置文件优化...
  11. 谈谈网络游戏中的延迟解决方案
  12. 举办了一个如何对外协作的讲座,4人到场
  13. centOS7中使用Nginx部署静态网页
  14. unity渲染管线及升级URP
  15. 网吧流媒体服务器系统,轻松搭建网吧影视服务器 让网速快起来
  16. Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 论文翻译
  17. 39 个奇葩代码注释,看完笑哭了
  18. DHTMLXGantt in Flutter DHTMLXGantt
  19. LabVIEW基础课程(2) ----虚拟抽奖机
  20. 外设驱动库开发笔记40:AT25xxx外部存储器驱动

热门文章

  1. 生活大爆炸第三季 那些精妙的台词翻译
  2. 小米蓝牙耳机不能串联问题解决
  3. 组态王如何让计算机关机,组态王软件系统登陆与退出.doc
  4. 微信小程序——图片识别
  5. 实战解决小程序图片加载问题
  6. kd树的根节点_KD树 - Deribs4 - 博客园
  7. 使用Roslyn动态编译代码
  8. windows下CMD常用命令
  9. 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别
  10. ArcGIS与GIS知识:ARCGIS中坐标转换及地理坐标、投影坐标的定义以及投影分度带的划分