Python实践应用-导学(1)

1.高效办公

1.1什么是高效办公

在某地的写字楼内,有一位从事行政工作的打工人——阿西。

今天她来到工位后,就收到了领导的任务:

为了完成这个任务,阿西决定把所有的文件都收集到一个文件夹中以方便整理,然后手动复制粘贴,收集整理这些文件的文件名。

这种手动复制粘贴的方式,虽然不费脑,但却是一种重复且枯燥的无意义劳动,既学不到新的知识和技能,又有些浪费时间。

在日常的工作中,你可能也和阿西一样有遇到或听到以下的几种问题:

1)枯燥:对大量办公文件重复地进行复制粘贴,工作繁琐又无趣。

2)低效:在海量文件内找相关内容,重复相同的工作,效率低,陷入加班、延期、再加班、再延期的死循环。

3)易错:面对海量的文件、再加上机械的重复操作,一不在状态,就容易出现错误,有时不仅要加班重新做,还要挨一顿批。

那么,是否有任何方法或知识,能够快速完成阿西或你的无聊工作任务,使你们能够节省时间去做自己喜欢的事情呢?

你们肯定可以通过掌握高效办公的知识来提高工作效率。

那么,高效办公到底指什么?

高效办公是指通过运用相关技术或工具来处理日常工作中繁琐重复的任务,从而提高办公效率、节省时间的一种泛化的概念,类比于一种绝世武功。

使用Python学习高效的办公技巧,通过编写代码来替代手动操作,解决办公中常见的问题,提高高效办公的能力。

现在,我们就用 Python 知识,去解决阿西刚才遇到的问题,帮她拒绝重复工作,提高工作效率💪。

1.2项目实操

1.2.1代码体验

下面这份代码,几秒钟就可以搞定阿西半个小时的工作,快来体验一下代码的神奇吧。(或点击文末阅读全文获取!)


https://app.datacamp.com/workspace/w/0cc4dbdd-1227-4eda-9105-a8b5de0fa934/edit?file=code.ipynb


打开链接进行下列操作(复制链接到浏览器):         

怎么样,是不是很神奇。现在来看看,应该如何实现这个程序。

这个程序一共有 3 个小步骤。

刚才你体验的代码,就是按照这个逻辑实现的,但为了实现这份代码,你不仅需要梳理清楚思维逻辑,还需要掌握下图中所示的核心代码(即领域知识)。

为了按照逻辑实现这份代码,我们需要掌握完成项目所需的三个核心知识点:

1)文件夹的绝对路径
2)模块与库
3)os 模块中的 os.listdir()

学会上述三个知识点,我们就能实现项目。下面我们就按照顺序,把他们逐个击破。

1.2.2 文件夹的绝对路径

在打印文件夹中所有文件名之前,需要先明确文件夹的位置。计算机中,该位置由路径来表示。

路径是指连接起始点和终点的一条线路。它的地址类似于现实生活中的地址。

例如寄送一封信件时,如果收件地址是东方明珠电视塔,应该先写上海市浦东新区世纪大道1号,先注明省市名称,紧接着标明区域和街道名称,最后再具体到门牌号码。

文件(文件夹)的路径也一样,它表示文件(文件夹)在电脑中的地址,一般先从根目录写起,再到文件夹,最后到文件(文件夹)名称。

何为根目录呢?通常,我们会把最初始的目录(路径中最左侧的一小节)称为根目录,就像一棵树是从树根开始长起来一样,一个路径一般也是从根目录开始表示的。

这类从根目录写起,从左往右,一级一级地指向文件的路径,称之为绝对路径

既然有绝对路径,那么肯定就会有相对路径,不过相对路径的概念对于初学者来说不太好理解,我们会在正式课程中讲解。

在绝对路径中,文件层级用斜杠 / + 文件夹或文件名表示。

看看【参考资料】文件夹的位置,再理解一下绝对路径的写法。

另外,文件的绝对路径要用字符串表示,记得加单引号' '或双引号" "

上面所示的所有路径,与 MacOS 系统显示的路径是一致的。但值得注意的是,如果你在使用 Windows 系统,可能在电脑上看到的绝对路径是这样的:

在 Windows 系统中,根目录用盘符:(盘符 + 英文冒号)表示,比如根目录是 C 盘,就是 C:,根目录是 D 盘就是 D:

另外,你应该可以注意到,上图中斜杠的方向与我讲的是相反的。

图片中所示的为\,我前面讲的是/。这是因为,\在 Python 中特殊含义,如果直接使用可能会导致代码无法正常运行。所以,在写 Python 代码时,不论什么系统,都写/就好,如下图所示:

总结下绝对路径的内容👇。

好了,定位到文件夹位置后,我们就可以进入下一步,获取指定文件夹中的所有文件名了。

1.2.3 模块与库

Python 能够火爆出圈,降低了写程序的门槛,几乎实现了人人编程的“小目标”,靠的是什么:

1)Python 语言语法简单;

2)Python 应用广泛。

语法简单你上节课应该有所感触,应用广泛则是得益于 Python 中模块与库的数量多,种类丰富。那么,什么是模块与库呢?

模块与库其实是有着联系的两个概念。

如果把 Python 比作手机,那库就像手机中的软件(app),它可以实现各种各样的功能。

如果说相当于一个手机中的软件,那模块就相当于软件的某个功能。

它们之间其实是一种包含或者组合的关系,模块用来实现某个功能,而库则集合了多个相关功能,所以库是由多个模块组成的。

如果把相机 app 视为库的话:相机是解决拍摄问题的软件,模块则类似于相机内部的闪光灯、聚焦、相册等小功能。

要使用模块或库的话,我们需要用 Python 的语法导入它们,语法虽然很简单,但确是本节的重点之一📝,如下所示。

# 导入模块或库import 模块名/库名

先写关键字import(import 的中文可以理解为导入),然后输入空格后,写入模块名库名

对模块与库的概念有所了解后,我们有请今天的主角——os模块

os 模块

os 是 Operating System 的缩写,Operating System 的意思是操作系统,这个模块经常被用来操作电脑中的文件。

首先请你写出导入 os 模块的代码。

# 导入 os 模块

很简单的代码,你可以参考下我的答案。

# 导入 os 模块import os

os 模块有很多神奇的功能,比如它能帮你删除某个文件或文件夹,或者帮你创建文件夹,重命名文件等等。当然这些都是些初学者容易理解的功能,它还可以对电脑做更多的操作,等你的编程水平上来后,就可以去探索了。

开始下一步之前,我们再来图片总结下模块与库的内容👇。

1.2.4 os.listdir()

我们今天使用的功能是os.listdir(),这个功能和项目要求完美匹配,可以获取文件夹下的文件名。

先来给os.listdir()代表的功能下一个定义,即:它可以用来获取到指定的文件夹路径下包含的所有文件的名字。

有些抽象?没关系,你可以把os.listdir()看作是一个听话的机器人,只要告诉它文件夹的位置,它就会乖乖地把文件夹中包含的所有文件名告诉你。

通常情况下,语法如下图所示:

你应该注意到了,我在图片中标注出了一个英文的点.,这其实是一种特殊的“召唤师技能” 😏。

就像动漫人物放招之前都得喊技能名称,要使用模块的某个功能,也需要使用英文的.把功能“喊出来”。即我们需要通过模块名.功能名()的形式来使用模块中的某个功能。

借助os.listdir()获取到所有文件名后,通常需要将这些文件名赋值给一个变量(图中的 filenames),为了让这些文件名能够在终端显示,我们还需要使用上节学过的print(),这里就不再赘述了。

好了,最后用图片总结下os.listdir()👇。

1.2.5项目实操

打开链接(或点击文末阅读全文)获取代码和文件(网页需要注册、登陆)

链接文件位置:

代码运行方式:

代码效果:

1.2.6 项目练习

打开链接(或点击文末阅读全文)获取代码和文件

提示:文件路径查找方法:(点击⑥即可复制路径到剪切板)

2.数据分析

2.1. 什么是数据分析

2.1.1 你眼中的数据分析

先来做一道选择题,看看你眼中的数据分析是什么样子的。


你之前认为的数据分析是什么?

A.数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,

将它们加以汇总、理解并消化,以求最大化地开发数据的功能,发挥数据的作用。

B.数据分析是指对数据进行处理与分析,从而提取有用信息并得出结论的过程。

C.数据分析是一个从数据中通过分析手段发现业务价值的过程。

D.数据分析是个能通过数据,指导商业决策的技能。

实际上,以上说法都是正确的,同时也透露出了一个共同点,数据分析能创造价值。

既然数据分析可以创造价值,那这种价值是什么,数据分析能起到什么作用?一起来探索一下吧。

在这个信息爆炸的时代,你肯定经常受到各种各样的广告的打扰,无论是在观看视频、打开APP还是坐地铁时。受到的广告轰炸是不少的。

当你考虑如何规避令人厌烦的广告时,所有公司都在思考如何让广告更准确地投放到目标用户身上,以使广告投放的回报更高。

利用数据分析,这些公司可以更好地选择广告投放的时间、渠道和次数,从而提高广告的投放效果。

举例来说,当你在深夜感到肚子饿的时候,会看到美食广告。或者当你使用最频繁的手机软件时,会出现广告。

大多数广告的目的是推销商品,那么采用哪种营销策略可以增加商品的销售利润呢?

 同样地,数据分析可以帮助人们制定更好的销售策略,例如降价、加价、买一送一等。

哪些用户更值得赠送礼品,进行推销,新产品是否值得投入更多的资金等等这些问题都可以通过数据分析解决。

也就是说数据分析应用的范围比较广,可以发挥的作用也很多。可以将数据分析的作用总结为:从数据中提取信息,解决某个问题或作出某种决策

不知道上面的学习是否让你眼中的数据分析更加清晰,接下来我们会通过一个入门项目实操让你更好地认识数据分析。

让我们开始入门项目实操——产品销售数据分析的学习吧。

2.2入门实操

2.2.1 情景问题

卖得多有限公司有两款产品,分别是产品 A 和产品 B。7 月份销售价格分别是 10 元和 20 元。

公司的主管小黄想改善公司的销售业绩,于是在 8 月份选取 100 名销售人员对产品采取打折的销售策略,打折后产品 A 和产品 B 的销售价格分别是 8 元和 16 元。

如果这 100 名销售人员的销售业绩有所改善,则证明打折的销售策略有效,那么小黄就可以在公司全面推行这一策略。

下图是 7 月份和 8 月份 100 名销售人员的销售数据。(不计成本,销售额等同于利润)其中销售额和总销售额的计算方式如下:

销售额 = 销售数量 x 销售价格;

总销售额 = 产品 A 销售额 + 产品 B 销售额。

那采取的销售策略到底是有效还是无效呢?应该如何分析这两个月的销售数据?

和前面总结的一样,我们就是要从 7、8 月份的销售数据提取有用的信息,判断打折的销售策略是否有效,从而帮助主管小黄去决策是否采用打折的销售策略。

而在数据分析过程为了理清思路,不乱了手脚,一般会按下面的步骤进行操作。

上面的步骤主要是帮助你理清思路,逐步了解数据分析。

但你也可以根据实际情况去变通,就像这里的入门项目相对比较简单,所以只选取了明确目标和数据分析两个步骤。

2.2.2 明确目标

首先来明确一下最终的目标:其实就是判断打折的销售策略是否有效?

要怎样才算销售策略有效呢?是增加销售数量,还是增加销售额?

如果想知道打折销售是否能刺激用户购买产品,最直接的方法就是观察销售数量是否增加,如果销售数量有所增加,就说明打折销售确实能够促进用户购买产品。

实际上,销售数量的增加并不一定意味着销售策略的有效性,因为降价销售会导致销售价格的下降,尽管销售数量有可能会增加,但销售额也可能会减少。

以某销售员为例,该销售员在7月销售了10个产品A,单价为10元,销售总额为100元。

这名销售员在八月售出了 12 个产品 A,每个售价为 8 元,总销售额为 96 元。尽管销售数量有所增加,但销售额却有所下降。

也就是说可能会出现以下几种情况:

所以我们可以去对比 7、8 月份的销售数量和销售额,但主要还是看销售额,销售额增加说明销售策略有效。

但是从 7、8 月份的销售数据可以看到销售员阿凡雨产品 A 的销售额是增加的;而销售员李正强产品 A 的销售额是减少的。

阿凡雨成功运用了销售策略,而李正强却未能从中获得成功。

需要对比数据的整体情况,才能判断销售策略是否有效。

如何比较整体数据情况?可以使用一些统计指标来描述数据的整体情况。

在开展数据分析之前,需要先了解一些统计指标。

常用于描述数据整体情况的统计指标包括平均数、中位数、最大值、最小值和四分位数等。不能增加或减少句子的成分。

这些统计指标的计算方式如下(请仔细阅读图片中的信息):

其中使用频率高和比较难理解的是平均数和中位数,我们来重点学习一下。

平均数,它可以很好地反映数据的集中趋势,例如 A 班级平均成绩大于 B 班级的平均成绩,说明 A 班级的学生成绩整体比 B 班级的好。

中位数,也可以反映数据的集中趋势,不过效果没有平均数好,但是中位数不易受极端值影响,这是什么意思呢?

假设有一家小公司的普通员工年收入如下:

这 5 个人的年收入平均数和中位数都是 12 万,不过这似乎没有什么大问题。

是否考虑加入老总和副总的年收入?

他们公司的平均年收入瞬间达到了34万多,除了老总和副总,其他人的薪资都低于平均数。

老总和副总的年收入很高,并不会对年收入的中位数造成急剧变化,该中位数仍然为13万。

简单概括来说,无论是平均数还是中位数都可以用来表示数据的整体情况,但中位数相对于平均数更加稳定,在面对极端值的情况下更加准确。

如果一个公司员工的工资平均数和中位数都提高了,那么说明公司员工整体工资状况有所提高,而极端值对这种变化的影响要相对较小。

在了解相关的统计指标之后,下一步是学习如何使用代码计算这些指标并进行数据分析。

我们需要计算 7、8 月份销售数据的统计指标并对比分析。所以将数据分析这个步骤分为三部分,如下图:

2.2.3 读取并查看数据(见文末阅读原文)

2.2.4 计算数据的统计指标(见文末阅读原文)

2.2.5 对比统计指标并分析((见文末阅读原文)

3.爬虫

3.1.1 什么是爬虫

什么是爬虫?它是一种能够通过向网页链接发送网络请求,提取你需要的网页信息的程序,它能一次性获取大量的网页公开信息,也能定时分批获取特定的网页信息。

你可以把互联网想象成一张大网,而自动访问这张大网的程序就像那些爬行的蜘蛛,所以我们管这类程序叫做爬虫。

爬虫能做很多事,比如:爬一爬北京近两年二手房成交均价是多少?情人节期间深圳酒店的价格…等等。

还记得之前学过的数据分析的步骤吗?其中有一步叫做数据收集,在这一步你就可以使用爬虫技术,在网络上爬取你需要的数据。

在过去,数据的获取是通过一个个的点击访问,人工复制实现的。这种重复性的手动工作不仅浪费时间,还容易出差错。

并且受限于数据收集的速度,在瞬息万变的互联网世界,手动获取的数据往往不具备时效性。

网络爬虫技术的飞速发展完美解决了手动收集数据的痛点,不但实现了自动化还保证了数据的实时获取。

话不多说,我们现在来学习入门项目——爬取新闻快讯。

3.2. 入门项目实操

3.2.1 场景问题

马奔奔是公司的管培生,她每天早上都要整理国际财经类新闻作为一部分会议资料发给她的领导。

一般情况下,她都会去看东方财富网的全球财经快讯,然后将所有新闻标题复制粘贴下来。

网页链接:https://kuaixun.eastmoney.com/

这项工作很简单,但又十分消耗人的耐心,费神不说还伤眼。但使用 Python 爬虫程序,一秒钟就能将这几十条新闻标题全都提取出来。

下面我们先来学习如何使用 Python 爬虫程序来获取新闻。

爬取新闻快讯(运行代码见文末阅读原文)

# 导入模块与库import reimport requests
# 发起网络请求res = requests.get("https://kuaixun.eastmoney.com/")# 获取网页内容news = res.text# 提取网页信息title = re.findall('【.*?】', news)# 打印新闻标题print(title)

好啦!终端中显示出了所有的实时新闻标题,至于它是怎么做到的?我们来一起学习一下!

3.2.2 项目讲解

我们同样先来厘清它的思路,然后逐步学习每行代码的含义。

这个程序一共有4个小步骤。

正确的步骤应该是先发起网络请求,接着获取网页内容,然后提取网页信息,最后再打印提取到的新闻标题。

我们刚学习 Python,一定不能死记硬背代码,要自己能够理解每一行代码的含义。

总结下刚才爬虫项目的步骤:

【发起网络请求】 -> 【获取网页内容】 -> 【提取网页信息】 -> 【打印提取的信息】。

这次的代码就是根据这个顺序,一步一步写出来的。

代码忘了可以去查,步骤如果想错了那就怎么写都不对,甚至查都不知道查什么。

同类的场景都可以按照爬虫的这个步骤,下面我们来做个小拓展,尝试爬取下新闻的内容!

3.2.3 项目拓展

马奔奔的领导突然又想要所有新闻的内容,也就是【标题】后面的那一部分内容。奔奔一筹莫展,你去帮她解决这个问题。

可以看到,所有新闻内容都是以方括号】开始,尖括号<结束。

提示:正则表达式】.*?<可提取】与<之间的最短字符。

知道正则表达式怎么写之后, 怎么爬取所有的新闻内容?

爬取代码(运行代码见文末阅读原文)

# 导入模块与库import reimport requests
# 发起网络请求res = requests.get("https://kuaixun.eastmoney.com/")# 获取网页内容news = res.text# 提取网页信息content = re.findall('】.*?<', news)# 打印新闻内容print(content)

运行成功你会发现,新闻内容是爬下来了,但正则表达式匹配的符号】与<也被提取了出来,看着很难受。

这里我们可以通过限制正则表达式提取的字符来解决。

我们可以在正则表达式中使用圆括号()来限制提取范围,这样括号外匹配到的字符不会被提取出来。

比如正则表达式a(.*?)b就把字符ab写在了括号外面,拿它去匹配字符串'aaabcadbcd',全部结果就是'aa'以及'd'。

加完圆括号后,正则表达式还是会按照a.*?b去匹配字符,只是括号外的字符将不会被提取。

改进代码(运行代码见文末阅读原文)

# 导入模块与库import reimport requests
# 发起网络请求res = requests.get("https://kuaixun.eastmoney.com/")# 获取网页内容news = res.text# 提取网页信息content = re.findall('】(.*?)<', news)# 打印新闻内容print(content)

应该不难吧,只要注意小括号的位置即可。

最后我们来活学活用,尝试爬取一个新的网站。

3.2.4 实用训练

马奔奔的老板最近很喜欢上凤凰网看财经新闻,链接如下:

https://finance.ifeng.com/gold/

现在老板又开始吩咐奔奔去给他整理凤凰网的财经类新闻标题:

这次的标题我们无法用肉眼找出规则,只能寄希望于网页代码,我已经帮你标记出来了网页代码中的新闻标题。

新网页爬取代码(运行代码见文末阅读原文)

# 导入模块与库import requestsimport re
# 发起网络请求res = requests.get("https://finance.ifeng.com/gold/")# 获取网页内容news = res.text# 提取网页信息title = re.findall('docName=(.*?)&', news)# 打印新闻标题print(title)

4.结束语

经过上面的学习,我们对Python的三个小应用有了基本体验。虽然可能有些难度,但是不用担心,这只是入门阶段,相信在接下来的学习中,你会全部理解的。

无论你的目标和去向如何,想要深入探索 Python 魔法世界,都必须经历基础语法的训练才能向更高阶段发展。

代码被普遍认为是最冷酷无情的,因为它没有情感色彩,只有对和错的区分。我认为,没有什么比代码更具有人情味了,因为它可以跨越语言障碍、连接世界、缩短人与人之间的距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值