- 博客(16)
- 收藏
- 关注
原创 dataframe groupby 自定义聚合函数
一、背景业务需求,需要对数据聚合之后,按照分组对组内的结果按照自己定义的计算方法聚合二、代码实现参考代码如下:# 读取源文件df1 = pd.read_excel('./test_3.xlsx')df1.head()# 自定义聚合函数def get_total_marks(list1: list): """ 自定义聚合函数:计算规则如下 计算列表的结果: = 最大 + 1/2 * 第二大 + 1/4 * 第三大 + ... + (1/2**(n.
2020-11-19 14:03:38 5455
原创 dataframe 修改指定位置的值 提示 SettingWithCopyWarning的解决办法
一、背景记录dateframe的简单用法之修改变量的值。二、需求复现通过指定条件,修改某一列的值,无强制映射关系(即随机设置部分的值)三、常见错误1. 直接赋值错误,会提示系统无法赋值的警告2. 使用map函数赋值...
2020-11-19 13:51:08 1144
原创 sql实现row_number()方法以及使用pandas升级
一、背景鉴于sqlserver的row_number函数的便捷性,寻思sql如何实现,遍向大佬学习了一番,自我感觉还不错,于是来加强巩固一下。二、步骤1. 原始数据表select st.Sname Sname ,st.Ssex Ssex ,sc.Degree Degree ,te.Tname Tname ,te.Prof Prof ,te.Depart Depart ,cs.Cname Cname from Student as st -- 关联成.
2020-10-28 16:13:18 568
原创 经典排序之插入排序(希尔排序)
一、背景加深自己对经典排序算法的理解,并且探索更多简化的写法和优化的表现。二、算法介绍1. 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。2. 希尔排序(Shell's Sort)是插入排序的一种又称“缩小...
2020-10-19 15:57:30 372
原创 冒泡排序(简单而有效的排序方法)
一、背景加深自己对经典排序算法的理解,并且探索更多简化的写法和优化的表现。二、算法介绍它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。三、经典代码实现:def bubbl..
2020-10-15 10:23:07 589
原创 快速排序(一行代码搞定)
一、背景加深自己对经典排序算法的理解,并且探索更多简化的写法和优化的表现。二、算法介绍快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。三、经典代码实现:def quick_sort(random_list: list) -> list: "..
2020-10-14 15:06:21 514
原创 paramiko远程服务器nohup阻塞问题
一、需求描述:需要来回切换多台服务器(脚本命令不太熟),就用了python的paramiko模块进行远程连接服务器,控制程序的停止和启动。安装:pip installparamiko二、问题描述:import paramiko# 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing...
2019-04-01 16:50:23 3575 2
原创 puppeteer替换selenium爬虫的试用
一、优点puppeteer是一个Nodejs的库,支持调用Chrome的API来操纵Web,相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既在V8引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。二、安装npm i puppeteer --save注意点,如果下载chrome的时候报错...
2018-12-25 17:17:57 5877 3
原创 手机通讯录excel转换vcf
需求,实现批量导入手机联系人的测试功能:准备工作:1.将联系人名字和手机号保存为文本格式,逗号分隔,如下:张三,180*****427李四,180*****429王五,189*****456......保存为phone.txt(举例) 2.运行一下代码,将输出文件保存new_phone.vcf(举例)import quopriexp = """BEGI...
2018-12-15 12:01:07 3318
原创 pyaotugui.locateOnScreen()找不到坐标的解决思路
出于解放双手的想法,使用pyautogui对屏幕软件进行操作,静态图片识别很准确,但是对于实时运动的界面,图片识别就不稳定了。一、解决思路:获取屏幕截图后,使用像素对比实现两个图片找出相同的坐标,然后返回中心坐标。下面开始代码实现。二、实现思路:需要的库PIL以及pyautogui安装教程网上都有。。。举例图片:左图为原图,右图为需要找的动态运动的图:1.获取两...
2018-09-30 16:02:22 28533 11
原创 图片验证码反爬解决思路
自打有爬虫以来,爬虫与验证码的战斗就一直在进行着。下面是我处理简单验证码的一点心得:一、登录验证码:很多网站采取登录用户名+密码+图片验证码的方式进行登录。对于简单的图片验证码可以采用ocr光学标识符进行识别,而对于比较复杂的验证码则需要进行一些复杂的操作。步骤一:获取图片验证码,并且保存为文件方法:使用webdriver截频功能获取图片验证码,代码如下:from selen...
2018-08-15 17:59:47 4014 2
原创 lunix 配置chrome + selenium
一、选择selenium安装:pip3 install selenium==3.4.3如果提示没安装pip,使用 sudo apt install python-pip二、安装chrome浏览器(版本确认好):sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/...
2018-08-09 18:12:50 1352
原创 mitmweb + 模拟器抓包
用惯了fiddler配置手机抓包,发现有些特定的包不容易抓到(app启用了SSL Pinning,又叫“ssl证书绑定“),因此另辟蹊径,采用模拟器登陆,开启mitmweb抓包之旅。一、安装模拟器(雷电模拟器)下载网址:http://www.ldmnq.com/二、下载Xposed的apk安装包下载网址:http://repo.xposed.info/module/de.robv....
2018-08-07 18:07:27 9267 4
原创 selenium +chrome+ firefox + webdriver 遇到的坑
lunix中启动webdriver时报错一:测试代码为:#!/usr/bin/python# -*- coding: utf-8 -*-from selenium import webdriverdriver = webdriver.Firefox()driver.get("https://www.baidu.com")运行报错信息如下:Traceback (mo...
2018-07-28 11:22:52 13461 3
转载 redis强制停止之后遇到的问题
因为服务器强制重启导致的redis数据库问题: 错误信息如下:(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Plea...
2018-07-03 15:52:26 1176
原创 灵活设置定时脚本启停
一、爬虫定时任务python脚本:对于爬虫任务,通常需要设置定时任务自动启动,每天按时执行爬虫程序,而我们要做的就是通过数据库以及日志查看运行情况是否有异常。下面给出一个简单方便的定时器代码:# coding:utf-8'''2018.03.14'''import sys import timeimport datetime import subpr...
2018-07-02 14:42:45 1102
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人