数据分析的一般流程:
明确目标-》采集数据-》数据清洗与分析-》绘制图表并且可视化-》得出结论
1 循环打印嵌套列表:movies=[“the holy”,1975,“terry jones”,91,[“graham”,
[“michael”,“john”,“gilliam”,“idle”,“haha”]]],实现以下形式的输出:
The holy
1975
2、字典值操作
有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即:{‘k1’:大于66的所有值,‘k2’:小于66的所有值}
爬虫框架:scrapy 、selenium
request库,urlib原生爬虫
网络爬虫
网络爬虫是一种按照一定规则,自动抓取互联信息的程序或者脚本。
由于互联网数据的多样性,资源的有限性,现在根据用户需求定向抓取相关网页并分析,已经成为当今主流爬取策略
爬虫的本质
模拟浏览器打开网页,获取网页中我们想要的部分数据
爬虫工作流程
数据通常需要通过解析,解析方式:
定义信息提取规则,使用re(正则)第三方网页解析器,beautiful soup xpath bs4
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHCwfals-1634735959385)(C:/Users/Lenovo/AppData/Roaming/Typora/typora-user-images/image-20211019203520100.png)]
手动创建scrapy项目夹 p (mkdir p)
启动命令行,进入到该项目如 cd 到p夹下
scrapy startproject 项目名称
配置信息,配置itempiplines等的设置
后面就是修改配置文件settings.py部分的配置,定义item存数据
编写爬虫逻辑
在我们的ptest里面编写爬虫逻辑
爬取动态页面,用于web应用测试的工具,selenium测试直接在浏览器运行,可以模仿人的操作,可以有效应对反爬机制
有很多种元素定位的方法,比如基于id、name、xpath、css selector等方式来定位
返回单个元素:
返回列表:
find_elements_by_name()
find_elements_by_xpath()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_tag_name()
find_elements_by_class_name()
find_elements_by_css_selector()
因为id是唯一的所以我觉得不能返回列表
操作步骤:
操作步骤:
import numpy as np
np.ones(5)
A=np.array([[1,2],[3,4]])
np.zeros((2,3))
a2=np.arange(8).reshape(2,4)
从csv中读取数据
import pandas as pd
df =pd.read_csv("./数据阿巴巴巴.csv")
其实还可以读取html、txt
高级操作:
df=pd.read_csv("./shujv.cvs",delimiter=",",encoding="utf-8",header=0)
#delimiter以怎么样的方式来分割;解码方式utf-8;设置0行为头部
向csv中写入数据
df.to_csv("./ababab.csv",columns=["寶貝","价格"],index=False,header=True)
不要索引,以列头这两行导入
数据选取
行的选取
rows =df[0:3]
选择第0行到第2行数据
r=df.head()
选取前五行
列的选取
cols =df[['宝贝','价格']]
块
取0到3行的宝贝和价格
df.loc[0:3,['宝贝','价格']]
操作行和块
从已有的列中创建一个新列
df['销售额']=df['价格']*df['成交量']
df.head()#查看一下前五行数据
根据条件过滤行
df1=[(df["价格"]<100)&(df["成交量"]>1000)]
筛选出,价格小于100,成交量大于1000的数据
数据整理
数据描述
分组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzhROGsp-1634735959479)(C:/Users/Lenovo/AppData/Roaming/Typora/typora-user-images/image-20211019232946860.png)]
分割
前闭后开
合并
dataframe合并
pd.merge(df1,df2,how='left',on="卖家")#左连接
pd.merge(df1,df2,how='outer',on="卖家")#外连接
pd.merge(df1,df2,how='right',on="卖家")#右
不指定on那个列就默认相同的选择列名相同的一列
索引合并
轴向连接
按axis=1列拼接,axis为0就是按行,默认就是行。
pd.contact([col1,col2,col3],axis=1)
变形
4.2.3 缺失值
初始化,导库,乱码,设定背景
import matplotlib
import matplotlit.pylot
生成一个画布(规定画布大小,坐标系)
fig,axes =plt.subplots(1,2,figsize=(12,5))
绘图(形状)
axes[0].hit(df,bins=20)
自动调整样式
fig.tight_layout()