Python高手之路必修技

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

在数据分析中,一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,在这里小聚整理了使用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站所有视频相关配套资料

现在 全套免费送!!

领取方式:

关注同名公众号

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,572评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,071评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,409评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,569评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,360评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,895评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,979评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,123评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,643评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,559评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,742评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,250评论 5 356
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,981评论 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,363评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,622评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,354评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,707评论 2 370

推荐阅读更多精彩内容