pandas
Pandas数据结构介绍SeriesSeries介绍Series是一种一维的数组型对象,它包含了一个值序列(values)**,并且包含了数据标签,称为索引(index)**。
Series创建pd.Series(data=None,index=None,dtype=None,name=None,copy=False)
data:创建数组的数据,可为array-like, dict, or scalar value
index:指定索引
dtype:数组数据类型
name:数组名称
copy:是否拷贝
data可为iterable, dict, or scalar value索引默认为range(0,n) 可以通过index指定索引
12345678910111213import pandas as pdimport numpy as np#指定索引 索引可以重复 索引长度和value长度必须一致s1 = pd.Series([1,2,3,4,5],index=list('abcde'))print(s1)#a 1#b 2#c 3# ...
numpy
Numpy介绍
Numpy(Numerical Python)是目前Python数值计算中最为重要的基础包。大多数计算包都提供了基于Numpy的科学函数功能,将Numpy的数组对象作为数据交换的通用语
提供高效多维数组
提供了基于数组的便捷算术操作以及广播机制
对数据进行快速的矩阵计算
对硬盘中数组数据进行读写操作
Numpy安装直接在dos命令行中pip install numpy 即可
可参考官网:https://numpy.org/devdocs/user/quickstart.html
基本操作
创建N维数组对象
numpy.array(object)
1234import numpy as npli = [1,2,3,4]arr = np.array(li)arr
numpy.arange([start,] stop[, step,])
123import numpy as nparr = np.arange(1,5)arr
数据类型
类型
类型代码
描述
int8,uint8
i1,u1
有符号和无符号的8数位整数
int16, ...
matplotlib
Matplotlib介绍
Matplotlib是一个Python的基础绘图库,它可与 NumPy 一起使用,代替Matlab使用。
将数据进行可视化,使数据更直观
使数据更加更具有说服力
安装命令
pip install matplotlib
官网:https://matplotlib.org/users/installing.html
图片与子图
plt.figure()生成新图片
在IPython中,执行该代码一个空白的绘图窗口就会出现,但在Jupyter中则没有任何显示
12from matplotlib import pyplot as pltfig = plt.figure()
除此之外,Matplotlib包含一个便捷方法plt.subplots创建一个新的图片,然后返回包含了已生成子图对象的Numpy数组。
plt.subplots(nrows, ncols, sharex, sharey)
nrows子图的行数
ncols子图的列数
sharex 所有子图使用相同的x轴刻度
sharey 所有子图使用相同的y轴刻度
那么实际上,当我们 ...
移动端爬取数据
UIAutomator的介绍UIAutomator是google提供的用来做安卓自动化测试的一个java库
UIAutomator的缺陷
测试脚本只能用Java语言开发
测试脚本要打包成jar包或者apk包上传到设备上才能实现
UIAutomato2的优势
UI自动化编写采用Python,学习成本低
UI控件识别有专门的工具 weditor
环境搭建简单
UI自动化脚本运行稳定
项目地址https://github.com/openatx/uiautomator2
UIAutomator2的执行流程
在移动设备上安装atx-agent(守护进程),随后atx-agent启动ui2服务(默认7912端口)进行监听
在PC端来编写脚本(相当于发送HTTP请求到移动设备的server端)
移动设备通过wifi或usb接收到了PC上发来的HTTP请求,执行定制的操作
adbadb的安装与使用Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具
Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令
Adb server adb ...
MangoDB
MangoDBSQL与NoSQL区别
在SQL中层级关系:数据库->表->数据
在NoSQL中是:数据库->集合->文档
MongoDB优势
无数据结构限制
没有表结构的概念,每条记录可以有完全不同的结构
业务开发方便快捷
大数据量和高性能
nosql数据库都具有非常高的读写性能,尤其在大数量下表现优秀
良好的支持
完善的文档
齐全的驱动支持
MongoDB Windows安装与运行
Windows安装MongoDB:https://www.cnblogs.com/chy18883701161/p/11100560.html
把MongoDB的bin目录加入到环境变量中
执行
1mongod --dbpath C:\Program Files\MongoDB\Server\4.4\data # 启动
连接
在环境变量设置好的前提下,使用以下命令mongo就可以进入到mongo的操作终端了
1mongo
MongoDB三元素
三元素:数据库、集合、文档
文档:就是关系型数据库中的一行。文档是一个对象,由键值对构成,是json的扩 ...
scrapy爬取图片
Scrapy爬取图片方法一 直接爬取
carcar
123456789101112131415import scrapyclass CarcarSpider(scrapy.Spider): name = 'carcar' allowed_domains = ['car.autohome.com.cn'] start_urls = ['https://car.autohome.com.cn/photolist/series/46488/6027826.html#pvareaid=3454450'] def parse(self, response): ul = response.xpath('//ul[@id="imgList"]/li') for li in ul: item = {} item['src'] = 'https:'+ ...
redis
Redis背景随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈
RedisRedis是一个高性能的,开源的,C语言开发的,键值对存储数据的nosql数据库。
NoSQL:not only sql,泛指非关系型数据库 Redis/MongoDB/Hbase Hadoop
关系型数据库:MySQL、oracle、SqlServer
数据库发展历史
在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求
单数据库
随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求
缓存(memcache)+单数据库实例
缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大
缓存+主从数据库+读写分离
数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈、
缓存+主从数据库集群+读写分离+分库分表
互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性高,实时性高的 ...
爬取小程序社区题目及作者
需求:爬取教程中的题目以及作者url : http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1
1234567891011121314151617181920212223242526import scrapyfrom scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Ruleclass CxcSpider(CrawlSpider): name = 'cxc' allowed_domains = ['wxapp-union.com'] start_urls = ['http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1'] rules = ( Rule(LinkExtractor(allow=r'htt ...
scrapy 模拟登陆
Scrapy模拟登陆方法
正常模拟登陆(scrapy模拟登陆方式)
直接携带cookie
模拟登陆人人网
1234567891011121314151617181920import scrapyclass RenSpider(scrapy.Spider): name = 'ren' allowed_domains = ['renren,com'] start_urls = ['http://www.renren.com/975472415/profile'] def start_requests(self): cookies = 'xxxx=xxxx; xxxx=xxxx; xxxxx=xxxxx; '#已登录的cookie cookie = { i.split('=')[0] : i.split('=')[1] for i in cookies.split('; ...