关注小聚,获取数据分析最新资讯

在数据分析中,一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,在这里小聚整理了使用Python进行数据分析的一些小技巧,

希望能成为你数据分析时 Python 日常帮手的最佳实践。‍

巧用 Python 爬虫,实现财富自由

首先可以用 Python 来进行爬虫,什么是爬虫?简单理解来说就是抓取网络上的数据(文档、资料、图片等)。比如你考研可以爬文档和学习资料,要网络上的表格数据做分析,批量下载图片等。

下面我们来看看是如何实现的。

01

爬取文档、学习资料

首先,你得先确定你要爬的网站是什么?你要获取的目的是什么?比如,小明想爬青研帮网站中的招考指南,所以他想搜集目前该网页的所有文章的标题和超链接,以方便后续浏览。

爬取网站的链接:https://zkaoy.com/sions/exam
目的:收集目前该网页的所有文章的标题和超链接

使用 Python,可以参考以下两步的代码模板实现(提示:需要先安装 Python 依赖:urllib3 bs4)。

第一步,下载该网页并保存为文件,代码如下。

import urllib3

# 第一个函数,用来下载网页,返回网页内容

# 参数 url 代表所要下载的网页网址。

# 整体代码和之前类似

def download_content(url):

http = urllib3.PoolManager()

response = http.request("GET", url)

response_data = response.data

html_content = response_data.decode()

return html_content

# 第二个函数,将字符串内容保存到文件中

# 第一个参数为所要保存的文件名,第二个参数为要保存的字符串内容的变量

def save_to_file(filename, content):

fo = open(filename,"w", encoding="utf-8")

fo.write(content)

fo.close()

# 下载报考指南的网页

url = "https://zkaoy.com/sions/exam"

result = download_content(url)

save_to_file("tips1.html", result)

第二步,解析网页,并提取出文章的链接和标题。

from bs4 import BeautifulSoup

# 输入参数为要分析的 html 文件名,返回值为对应的BeautifulSoup对象

def create_doc_from_filename(filename):

fo = open(filename, "r", encoding='utf-8')

html_content = fo.read()

fo.close()

doc = BeautifulSoup(html_content)

return doc

doc = create_doc_from_filename("tips1.html")

post_list = doc.find_all("div",class_="post-info")

for post in post_list:

link = post.find_all("a")[1]

print(link.text.strip())

print(link["href"])

执行代码之后,你就可以看到网页中的标题和链接已经被打印到了屏幕上。那如果你想爬取其他网页如何替换呢?你只需替换几处即可,如下图所示。

  • 替换为想要下载的网页地址

  • 替换为网页保存的文件名

  • 是 BeautifulSoup 函数,我们用它一步步从 html 的结构中解析出我们想要的内容,这里我们实现的是首先找到所有 class 属性是 post-info 的 div 标签,然后将这些标签中的 a 标签的文本部分提取出来。

02

使用代理服务器

这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等。

03

多线程并发抓取

单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。

虽然说Python的多线程很鸡肋但是对于爬虫这种网络频繁型,还是能一定程度提高效率的。

当然爬虫技巧除了以上外,还可以进行Cookies处理、伪装成浏览器访问、页面解析等等,小聚将在后续的文章中进行详细讲解说明。

自动办公,提升 X10 倍工作效率

01

一行代码,定义List

定义某种列表时,写For循环过于麻烦,幸运的是,Python有一种内置的方法可以在一行代码中解决这个问题。

下面是使用For循环创建列表和用一行代码创建列表的对比。

x = [1,2,3,4]

out = []

for item in x:

out.append(item**2)

print(out)

[1, 4, 9, 16]

# vs.

x = [1,2,3,4]

out = [item**2 for item in x]

print(out)

[1, 4, 9, 16]

02

Map和Filter

一旦掌握了lambda表达式,学习将它们与Map和Filter函数配合使用,可以实现更为强大的功能。

具体来说,map通过对列表中每个元素执行某种操作并将其转换为新列表。在本例中,它遍历每个元素并乘以2,构成新列表。请注意,list()函数只是将输出转换为列表类型。

Filter函数接受一个列表和一条规则,就像map一样,但它通过比较每个元素和布尔过滤规则来返回原始列表的一个子集。

Arange返回给定步长的等差列表。它的三个参数start、stop、step分别表示起始值,结束值和步长, 请注意,stop点是一个“截止”值,因此它不会包含在数组输出中。

Linspace和Arrange非常相似,但略有不同。Linspace以指定数目均匀分割区间。所以给定区间start和end,以及等分分割点数目num,linspace将返回一个NumPy数组。这对绘图时数据可视化和声明坐标轴特别有用。

Axis代表什么?

在Pandas中,删除一列或在NumPy矩阵中求和值时,可能会遇到Axis。我们用删除一列(行)的例子:

如果你想处理列,将Axis设置为1,如果你想要处理行,将其设置为0。但为什么呢?回想一下Pandas中的shape

03

使用 Python 实现批量重命名文件

使用 Python 进行批量的文件重命名是比较简单的。比如我们要把一批图片导入到 PS 中编辑,或者导致一批视频文件到 PR 中操作,如果资源的文件名杂乱的话会严重影响效率。所以一般情况下我们都需要首先将相关的文件批量的按照某个规则重命名。

这里我们以前面爬虫示例的 3 小节中批量下载的图片文件夹为例,批量把该文件夹中的所有图片名字重命名为 “图片_0x.jpg ”的形式,其中 x 是图片的序号,逐一递增。

代码如下:

import os

root, dirs, files = next(os.walk("tips_3/"))

idx = 0

for item in files:

old_file_path = os.path.join(root,item)

new_file_path = os.path.join(root, f"图片_{idx}.jpg")

os.rename(old_file_path, new_file_path)

idx = idx + 1

执行过后,重新查看 tips_3 文件夹,可以看到下面的图片均已变成我们希望的格式。

当你希望批量重命名一批文件时,可以首先将这些文件放到某个文件夹中,然后按照下述方法进行批量重命名。

  • 1,替换为希望批量重命名的文件夹;

  • 2,文件的格式。其中{idx}部分需要保留,代码执行时会被替换为序号。

小结

虽然以上技巧会让你的数据分析更加方便快捷,但是在开始数据分析之旅之前,必须要掌握Python的基础方法和用法,就像一出生先要学会走路一样,别着急上跑道,打好基本功才能练就硬本事,特别是初学者一定要记住以下几点:

  • 代码规范,这本身就是一个非常好的习惯,如果开始不养好好的代码规划,以后会很痛苦。

  • 多动手,少看书,很多人学Python就一味的看书,这不是学数学物理,你看例题可能就会了,学习Python主要是学习编程思想。

  • 勤练习,学完新的知识点,一定要记得如何去应用,不然学完就会忘,学我们这行主要都是实际操作。

  • 学习要有效率,如果自己都觉得效率非常低,那就停不停,找一下原因,去问问过来人这是为什么。

聚数学院年末福利持续赠送中,

小聚整理汇总了官方B站所有视频相关配套资料

现在 全套免费送!!

领取方式:

关注同名公众号,扫码进入学习资料分享群,备注所需视频资料期数,即可获取!小聚将持续同步跟新B站视频与资料.

Python高手之路必修技相关推荐

  1. python高手之路第三版_《Python高手之路(第3版)》——1.3 版本编号-阿里云开发者社区...

    本节书摘来自异步社区<Python高手之路(第3版)>一书中的第1章,第1.3节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区"异步社区&quo ...

  2. 《Python高手之路(第3版)》——1.5 Joshua Harlow访谈

    本节书摘来自异步社区<Python高手之路(第3版)>一书中的第1章,第1.5节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区"异步社区&quo ...

  3. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  4. 小白用python处理excel文件-python高手之路python处理excel文件(方法汇总)

    python3处理Excel文件的实际应用谢谢时光大盗把小编的时间偷走让小编没有时间去想你. 最近遇到个问题,使用python处理Excel文件.如何将表格中数据读取以后以而小编使用的是python3 ...

  5. python高手之路_python高手之路python处理ex

    用python来自动生成excel数据文件.python处理excel文件主要是第三方模块库xlrd.xlwt.xluntils和pyExcelerator,除此之外,python处理excel还可以 ...

  6. python高手之路python处理excel文件

    用python来自动生成excel数据文件.python处理excel文件主要是第三方模块库xlrd.xlwt.xluntils和pyExcelerator,除此之外,python处理excel还可以 ...

  7. Python高手之路【十】python基础之反射

    反射说简单点 --> 就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员. 需求:由用户输入一个模块名,用户输入什么模块名,文件中就导入什么模块: 1:文件都在同一目录下的导 ...

  8. python高手之路(第3版)_Python高手之路(第3版)

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  9. Python高手之路【十二】面向对象设计模式

    单例模式 单例,顾名思义单个实例. class Person:__instance = Nonedef __init__(self):pass@staticmethoddef getInstance( ...

最新文章

  1. 关于C#使用Shockwaveflash控件设计器不显示问题的解决方案
  2. 最大公因数、最小公倍数、因式分解
  3. CSS选择器的声明与嵌套
  4. 如何向开源软件贡献自己的力量
  5. 暴力推荐2:硬盘分区丢失之DiskGenius
  6. SPOJ371 Boxes(最小费用最大流)
  7. wiki源码_一个轻量级的企业Wiki和团队知识分享平台:MM-Wiki搭建教程
  8. 21.Shiro在springboot与vue前后端分离项目里的session管理
  9. zone watermark水位控制
  10. 拿到窗口ID,为什么画的内容没有显示出来
  11. 快排-Python实现
  12. iredmail mysql 配置_Iredmail各大组件连接Mysql配置说明
  13. 最新版本的mmdetection2.0 (v2.0.0版本)环境搭建、训练自己的数据集、测试以及常见错误集合
  14. 【WordPress】添加备案信息
  15. 一篇论文摘要计算机英语,计算机毕业论文英文摘要的写作方法.doc
  16. 杭州公司java开发工程师常见面试问题
  17. Unity3D网络游戏0.2
  18. Docker 学习视频集 bilibili
  19. API 网关和微服务介绍
  20. vb.net合伙数据库access(一)——连接数据库

热门文章

  1. mysql触发器更新级联删除_用触发器来实现级联更新级联删除
  2. jsp+ssm计算机毕业设计高校教师教学助手系统的设计与实现【附源码】
  3. 2012年度十大杰出IT博客之 高俊峰
  4. #UVM# useage 解析 之 uvm_barrier 和 uvm_barrier_pool (三)小试牛刀
  5. Excel制作的自动汇总的评分表模板
  6. JAVA 项目经理的职责概述
  7. 计算机设计原理教学反思,计算机系统及工作原理教学设计与教学反思.doc
  8. intel x520网卡支持服务器列表,网吧环境下Intelx520SR1万兆网卡的一些设置教程和经验...
  9. java ssm oa_基于SSM的OA系统
  10. 图像dpi像素调整方法