python命令模式和交互模式的切换,python交互模式下如何多行输入
用Python脚本转换数据和命令行的方法详细介绍了如何用Python脚本和命令行转换数据。
但是,首先,有必要问一个你可能正在思考的问题。“Python如何适应命令行?当我知道我可以使用我的IPython笔记本电脑来完成所有的数据科学工作时,为什么我还要使用命令行来与Python进行交互?还是Jupyter实验室?”
虽然笔记本电脑是快速可视化和搜索数据的理想选择,但Python脚本是将我们所学的知识投入生产的方法。假设您想创建一个网站,让人们发布具有理想标题和提交时间的黑客新闻帖子。为此,需要一个脚本。
本教程假设你对函数有基本的了解,即使有一点命令行经验也不会受损。如果您以前从未使用过Python,请随意查看涵盖Python函数基础的任务,或者钻研数据科学课程。最近,引入了两个新的交互式命令行课程:命令行元素和命令行中的文本处理。因此,如果您想更深入地思考命令行,我们还建议您
换句话说,不用太担心!我会解释我们所做的一切。我们走吧!
熟悉数据
黑客新闻是一个允许用户通过互联网提交文章的网站(通常是科技和创业公司)。其他用户可以“欣赏”这些文章,以表明他们喜欢这些文章。提交的投票越多,他们在社区中就越受欢迎。热门文章会进入黑客新闻的“首页”,在其他网站更容易被别人看到。
使用的数据集是Arnaud Drizard使用黑客新闻API编译的,这里。我从数据中随机选择了10,000行,删除了所有多余的列。我们的数据集只有四列:
submission _ time——提交文章的时候。
up votes-提交的投票数。
URL—提交的基本域。
标题—提交的标题。用户可以在不匹配原文章标题的情况下进行编辑。
写一个回答三个重要问题的脚本。
头条最常见的新闻是什么?
黑客新闻投稿最多的是哪个域名?
大部分文章什么时候提交?
注意:编程时,有很多处理任务的方法。在本教程中,你将逐步解决这些问题,但肯定有其他有效的方法,所以请放心尝试自己的方法。
使用命令行和Python脚本读取数据
要标记星号,请使用Transforming_Data_with_Python在桌面上创建一个文件夹。要使用命令行创建文件夹,可以用mkdir命令命名文件夹。例如,如果您想要创建一个名为test的文件夹,请导航到桌面目录并输入mkdir test。
创建文件夹的原因将在后面讨论。现在让我们转到用cd命令创建的文件夹。这个cd命令允许您使用命令行来更改目录。
使用命令行创建文件有许多方法,但是您可以使用称为管道交付和重定向输出的技术同时做两件事。也就是说,将stdout的输出(命令行生成的标准输出)重定向到一个文件,然后创建一个新文件。这意味着您可以创建一个新文件,并使用输出作为文件的内容,而不只是让命令行打印输出。
为此,请使用和。这取决于你想在文件中做什么。如果文件不存在,两者都会创建文件。但是,它会用重定向输出覆盖文件中的现有文本,并将重定向输出附加到文件中。
因为您要将数据导入此文件并创建描述性文件名和函数名,请将read.py保存到名为load_data的函数和名为的文件中。使用读取数据的命令行来创建函数。为此,使用这个printf函数。使用printf。因为可以打印换行符和制表符,所以使用脚本是为了方便自己和他人阅读。
为此,请在命令行中键入以下内容
printf importpandasaspd \ n \ ndeload _ data(:(n \ thn _ stories=PD . read _ CSV)HN _ stories。CSV uppv
检查上面的代码,有很多事情要做。分解一下。在函数中,我们认为:
A.请注意,为了便于阅读脚本,请使用printf命令从命令行生成输出,并在生成输出时保留格式。
B.进口熊猫。
C.将数据集(hn_stories.csv)读入pandas数据框。
使用df.columns列名称添加到数据框。
创建函数load_data(名为e。该函数包含读取和处理数据集的代码。
F.使用换行符\n和制表符代码\ t保持格式,以便Python可以读取脚本。
G.将输出重定向到read.py以使用操作符
被调用的文件。文件已创建,因为read.py尚不存在。
运行上述代码后,我们可以在命令行中键入并执行cat read.py命令来检查内容read.py如果一切正常,我们的read.py文件将如下所示:
创建__init__。巴拉圭
在项目的其余部分,我们将创建更多的脚本来回答我们的问题,并使用这个load_data()函数。虽然我们可以将这个函数粘贴到每个使用它的文件中,但是如果我们正在处理的项目很大,它会变得非常麻烦。
为了解决这个问题,我们可以创建一个名为__init__.py的文件,本质上就是__init__。py允许文件夹将其目录文件视为包。最简单的形式__init__。py可以是一个空文件。它的存在只需要将目录文件视为包。您可以在Python文档中找到关于包和模块的更多信息。
因为load_data()是中的函数read.py,所以我们可以使用与导入包相同的方法来导入这个函数:从read导入load_data()。
还记得使用命令行创建文件的各种方法吗?我们可以使用另一个命令来创建文件__init__.py。这一次,我们将使用这个touch命令来创建文件。Touch是一个命令,它会在您运行该命令后立即为您创建一个空文件:
探究题目中的单词
现在我们已经创建了一个脚本来读取和处理数据以及创建的data __init__。py,我们可以开始分析数据了!我们首先要探究的是出现在题目中的独特词汇。为此,我们必须做到以下几点:
1)count.py使用命令行创建一个名为。
2)从read.py导入load_data,调用函数读取数据集。
3)将所有标题合并成一个长字符串。当您合并标题时,我们希望在每个标题之间留一个空格。在这一步中,我们将使用Series.str.cat来连接字符串。
4)将一长串拆分成单词。
5)使用Counter类计算每个单词在字符串中出现的次数。
6)用这个。most_common()方法在wordCount中存储100个最常用的单词。
如果您使用命令行创建该文件,它将如下所示:
printf from read import load _ data \ n from collections import Counter \ n \ n stories=load _ data()\ n headlines=stories[ headline ]. str . cat(sep= )。lower()\ nwordCount=Counter(headlines . split())。most_common(100)\nprint(字数)\n count.py
运行上述代码后,您可以在命令行中键入并执行cat count.py命令来检查的内容count.py。如果一切正常,您的count.py文件将如下所示:
现在我们已经创建了Python脚本,我们可以从命令行运行该脚本来获得一百个最常用单词的列表。要运行该脚本,我们从命令行键入python count.py命令。
运行脚本后,您将看到以下打印结果:
[(the ,2045)、( to ,1641)、( a ,1276)、( of ,1170)、( for ,1140)、( in ,1036)、( and ,936)、(,733)、( is ,620)、( on ,568)、( hn:,537)、( with ,537)、( how ,526)、(-,487)、( your ,488。 147)、( my ,131)、( ,127)、( using ,125)、( free ,125)、( online ,123)、( apple ,123)、( get ,122)、( can ,115)、( open ,114)、( will ,112)、( android ,110)、( this ,110)、( out ,109)、( we ,106)、( its ,102)、(, ( design ,79),( business ,79),( 5 ,78),( apps ,77),( source ,77),( cloud ,76),( into ,76),( api ,75),( top ,74),( tech ,73),( javascript ,73),( like ,72),( programming ,72),( windows ,72),( when ,71),( ios ,70),“live”,69),( future
在我们的网站上浏览它们会很尴尬,但你可能会注意到最常见的词,如和等等。这些词被称为停用词。这些词对人的言语有用,但对数据分析没有帮助。你可以在我们的空间指南中找到更多关于停用词的信息;如果这个项目要扩展,从我们的分析中去除停用词将是一个有趣的下一步。
即使包含停用词,我们也能发现一些趋势。除了停用词,这些词大多与技术和创业有关。考虑到HackerNews专注于科技创业公司,这并不奇怪,但我们可以看到一些有趣的具体趋势。例如,谷歌是这个数据集中最常被提及的品牌。其他品牌如脸书、苹果和推特也是讨论的热门话题。
发现域提交
现在,我们已经探索了不同的标题,并显示了最常用的100个单词,我们现在可以探索域提交!为此,我们可以执行以下操作:
1)domains.py使用命令行创建一个名为。
2)从read.py导入load_data,调用函数读取数据集。
3)使用value _ counts()grand Panda中的方法计算列中每个值出现的次数。
4)遍历系列并打印索引值及其相关的总计。
命令行形式看起来是这样的:
printf from read import load _ data \ n \ n stories=load _ data()\ n domain=stories[ URL ]。value _ counts()\ n对于名称,domains.items中的行():\n\tprint({0}: {1} 。format(name,row))\n domains.py
同样,如果我们在命令行中输入cat domains.py来检查domains.py,我们应该会看到:
探索提交时间
我们想知道大多数文章什么时候提交。一个简单的重组方法就是查看文章的提交时间。为了解决这个问题,我们需要使用submission_time列。
submission_time列包含以下时间戳:2011-11-09T21:56:22Z。这些时间用UTC表示,UTC是大多数软件用来保持一致性的通用时区(想象一下,一个数据库中填充的所有时间都有不同的时区;用起来会很麻烦)。
为了从时间戳中获取小时数,我们可以使用这个dateutil库。中的解析器模块dateutil包含解析函数,该函数可以接受时间戳并返回datetime对象。这是文档的链接。解析时间戳后,hour Result Date对象的属性将告诉您文章是何时提交的。
为此,我们可以执行以下操作:
1)times.py使用命令行创建一个名为。
2)编写一个函数,从时间戳中提取小时。这个函数应该首先用于dateutil.parser.parse以解析时间戳,然后从结果datetime对象中提取小时,然后使用返回hour.hour。
3)使用pandas apply()方法创建提交时间列。
4)使用value _ counts()grand Panda中的方法计算每小时发生的次数。
5)打印结果。
我们在命令行中执行以下操作:
printf from date util . parser import parse \ n from read import load _ data \ n \ n \ n def extract _ hour(时间戳):\n\tdatetime=parse(时间戳)\ n \ thour=datetime . hour \ n \ t return hour \ n \ n stories=load _ data()\ n stories[ hour ]=stories[ submission _ time ]。apply(extract _ hour)\ n time=stories[ hour ]。value _ counts()\ n print(time) times . py
这看起来像一个独立的。py文件(如上所述,您可以通过cat times.py从命令行运行该文件来检查它):
现在我们已经创建了Python脚本,我们可以从命令行运行该脚本来获取特定时间内发布的文章数量的列表。为此,您可以从命令行输入python times.py命令。运行该脚本,您将看到以下结果:
你会注意到大多数提交的文章都是在下午发表的。但是请记住,这些时间是UTC时间。如果您有兴趣扩展这个项目,请尝试在脚本中添加一个部分,将UTC输出转换为本地时区。
下一步
在如何使用Python脚本进行数据和命令行的转换中,我们对数据进行了探索,建立了一个简短脚本的目录,这些脚本可以相互配合,提供所需的答案。这是构建我们的数据分析项目的生产版本的第一步。
但是,当然,这只是开始!在如何使用Python脚本转换数据和命令行中,我们还没有使用upvotes数据,因此这是扩展分析范围的一个很好的下一步:
A.获得最多票数的最长标题长度是多少?
B.最长提交时间是多少?
C.总票数如何随时间变化?
我们鼓励您结合自己的问题,并在继续探索该数据集时发挥创造力!
推荐IT互联网职业培训:python函数控制列表和字典zhuanlan.zhihu.com IT互联网职业培训:大数据分析Python库xlwings提高Excel工作效率教程juanlan.zhihu.com IT互联网职业培训:利用Python熊猫分析视频游戏数据娟兰。zhihu.comIT互联网职业培训:大数据分析Python For Loop教程zhuanlan.zhihu.com
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。