⑴ 可以让你快速用python进行数据分析的10个小技巧
一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。
一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便。
Pandas中数据框数据的Profiling过程
Profiling(分析器)是一个帮助我们理解数据的过程,而Pandas Profiling是一个Python包,它可以简单快速地对Pandas 的数据框数据进行 探索 性数据分析。
Pandas中df.describe()和df.info()函数可以实现EDA过程第一步。但是,它们只提供了对数据非常基本的概述,对于大型数据集没有太大帮助。 而Pandas中的Profiling功能简单通过一行代码就能显示大量信息,且在交互式HTML报告中也是如此。
对于给定的数据集,Pandas中的profiling包计算了以下统计信息:
由Pandas Profiling包计算出的统计信息包括直方图、众数、相关系数、分位数、描述统计量、其他信息——类型、单一变量值、缺失值等。
安装
用pip安装或者用conda安装
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代码是用很久以前的泰坦尼克数据集来演示多功能Python分析器的结果。
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代码就能实现在Jupyter Notebook中显示完整的数据分析报告,该报告非常详细,且包含了必要的图表信息。
还可以使用以下代码将报告导出到交互式HTML文件中。
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas实现交互式作图
Pandas有一个内置的.plot()函数作为DataFrame类的一部分。但是,使用此功能呈现的可视化不是交互式的,这使得它没那么吸引人。同样,使用pandas.DataFrame.plot()函数绘制图表也不能实现交互。 如果我们需要在不对代码进行重大修改的情况下用Pandas绘制交互式图表怎么办呢?这个时候就可以用Cufflinks库来实现。
Cufflinks库可以将有强大功能的plotly和拥有灵活性的pandas结合在一起,非常便于绘图。下面就来看在pandas中如何安装和使用Cufflinks库。
安装
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
用法
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是时候展示泰坦尼克号数据集的魔力了。
df.iplot()
df.iplot() vs df.plot()
右侧的可视化显示了静态图表,而左侧图表是交互式的,更详细,并且所有这些在语法上都没有任何重大更改。
Magic命令
Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。使用命令%lsmagic可以看到所有的可用命令。
所有可用的Magic命令列表
Magic命令有两种:行magic命令(line magics),以单个%字符为前缀,在单行输入操作;单元magic命令(cell magics),以双%%字符为前缀,可以在多行输入操作。如果设置为1,则不用键入%即可调用Magic函数。
接下来看一些在常见数据分析任务中可能用到的命令:
% pastebin
%pastebin将代码上传到Pastebin并返回url。Pastebin是一个在线内容托管服务,可以存储纯文本,如源代码片段,然后通过url可以与其他人共享。事实上,Github gist也类似于pastebin,只是有版本控制。
在file.py文件中写一个包含以下内容的python脚本,并试着运行看看结果。
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一个pastebin url。
%matplotlib notebook
函数用于在Jupyter notebook中呈现静态matplotlib图。用notebook替换inline,可以轻松获得可缩放和可调整大小的绘图。但记得这个函数要在导入matplotlib库之前调用。
%run
用%run函数在notebook中运行一个python脚本试试。
%run file.py
%%writefile
%% writefile是将单元格内容写入文件中。以下代码将脚本写入名为foo.py的文件并保存在当前目录中。
%%latex
%%latex函数将单元格内容以LaTeX形式呈现。此函数对于在单元格中编写数学公式和方程很有用。
查找并解决错误
交互式调试器也是一个神奇的功能,我把它单独定义了一类。如果在运行代码单元时出现异常,请在新行中键入%debug并运行它。 这将打开一个交互式调试环境,它能直接定位到发生异常的位置。还可以检查程序中分配的变量值,并在此处执行操作。退出调试器单击q即可。
Printing也有小技巧
如果您想生成美观的数据结构,pprint是首选。它在打印字典数据或JSON数据时特别有用。接下来看一个使用print和pprint来显示输出的示例。
让你的笔记脱颖而出
我们可以在您的Jupyter notebook中使用警示框/注释框来突出显示重要内容或其他需要突出的内容。注释的颜色取决于指定的警报类型。只需在需要突出显示的单元格中添加以下任一代码或所有代码即可。
蓝色警示框:信息提示
<p class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.
If it’s a note, you don’t have to include the word “Note”.
</p>
黄色警示框:警告
<p class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</p>
绿色警示框:成功
<p class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</p>
红色警示框:高危
<p class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
</p>
打印单元格所有代码的输出结果
假如有一个Jupyter Notebook的单元格,其中包含以下代码行:
In [1]: 10+5
11+6
Out [1]: 17
单元格的正常属性是只打印最后一个输出,而对于其他输出,我们需要添加print()函数。然而通过在notebook顶部添加以下代码段可以一次打印所有输出。
添加代码后所有的输出结果就会一个接一个地打印出来。
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
恢复原始设置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'选项运行python脚本
从命令行运行python脚本的典型方法是:python hello.py。但是,如果在运行相同的脚本时添加-i,例如python -i hello.py,就能提供更多优势。接下来看看结果如何。
首先,即使程序结束,python也不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。
其次,我们可以轻松地调用python调试器,因为我们仍然在解释器中:
import pdb
pdb.pm()
这能定位异常发生的位置,然后我们可以处理异常代码。
自动评论代码
Ctrl / Cmd + /自动注释单元格中的选定行,再次命中组合将取消注释相同的代码行。
删除容易恢复难
你有没有意外删除过Jupyter notebook中的单元格?如果答案是肯定的,那么可以掌握这个撤消删除操作的快捷方式。
如果您删除了单元格的内容,可以通过按CTRL / CMD + Z轻松恢复它。
如果需要恢复整个已删除的单元格,请按ESC + Z或EDIT>撤消删除单元格。
结论
在本文中,我列出了使用Python和Jupyter notebook时收集的一些小提示。我相信它们会对你有用,能让你有所收获,从而实现轻松编码!
⑵ 完全零基础者,如何正确学习编程
零基础学习编程 应从以下几方面入手:
1>.去了解计算机的基本组成,计算机的发展史和编程的发展史,看起来和编程没什么关系,潜在的影响还是十分大的;
2>.选择一门简单的语言作为入门语严;
3>.学会使用搜索引擎;
4>.知道如何看书;
5>.要”像”个高手;
6.>应具备的学习态度;
1>了解这些历史的意义:
了解一些编程的实质远比知道如何编程更有意义,不要在编程是怎么回事的情况下就去学习编程,这样对你的学习是十分不利的,作为一个编程爱好者,知道计算机的工作原理,这应该是一件再正常不过的事。
2>.选择入门语言:
这个问题在入门阶段一直是争议十分大的问题,n多语言,n多推荐,到最后搞到新手一会听说这种语言适合新手,于是学习这种语言,一会又有人会开始推荐你xxx语言,于是新手们又开始学习这种语言,搞到最后,什么语言都没搞懂,时间大把大把的流失,热情消耗殆尽。要解决这个问题,首先要明白一个根本问题,怎样挑选适合入门的编程语言?我推荐从难度这个角度来考虑,这门语言必须简单易学,有趣,而且要有一定的热度,有热度才能有更多的人一起交流讨论,翻开编程语言列表,发现有100多种编程语言,而且这个数还是在不断增加的,这里我们一起来看下2012年5月份的编程语言排行榜,能进排行榜前20的,首先在热度上都已经差不多了,现在要做的就是从排行榜里找到一门简单有趣的语言。
2012年5月编程语言排行
对于上述的语言,这里不可能一个个详细介绍,篇幅有限,最主要的是,这些语言的介绍只需要打开搜索引擎,输入这项语言的名字,搜索一下,就能看到详细介绍了,如果说不会搜索,那么,请返回第一个问题,一般来说,如果你去论坛提问什么语言适合入门,得到最多的结果应该是C语言,没错,就是上述排行榜排行第一的那个,强烈推荐C语言入门的同学如果看到这篇文章可能会很想吐槽,因为这里笔者要推荐的不是C语言,笔者认为,Python语言对于零基础更适合入门,很多人推荐C语言原因我猜测可能有两个,一是全国大部分的高校的编程课C语言是都有开设的,也可以说是学习过C语言的用户基数大,第二是C语言自身的强大,可谓是口碑好。基数大+口碑好,足以让你得到的结果是C语言居多。
笔者是Python语言入门,接触编程时完全是零基础,现在接触了C、接触了C++、JAVA,Visual Basic 6,回味了下,如果让我再次选择一门入门语言,我绝对不会后悔选择Python,建议每位同学去网络搜索下Python,看下是否真的简单易学,并且强大,如果你想快速写GUI(图形用户界面 )的软件,Python有一大把图形库供你选择,不像C语言,半年下来,还是停留在黑框框里,大大打击了初学者对软件开发的信心,对于写游戏,Python也是绝对不会让你失望的,pygame模块为你提供简单快速的游戏开发,Pygame是 跨平台 Python模块,专为电子游戏设计。 包含图像、声音。 虽说没法和Direct X相比,但对于新手来说,独立写个2D游戏也是一件很愉快的事。
对于Python,笔者就不再详细介绍了,只是推荐,具体选择什么语言,决定权还是在你手里,无论是C语言也好,Python语言也罢,下面所介绍的学习方法都是适用的。
3>.学会使用搜索引擎:
之所以推荐使用搜索引擎的目的是培养更好的独立解决问题的能力,通常来说,刚学编程时,可能我们有时候连使用什么软件作为编程环境都不知,或者下载安装了编程环境却不知如何使用,这时搜索就派上大用场了,跑到搜索引擎里输入”xxx 使用教程”,结果就出来了,简直太方便了。
而且,新人都喜欢加很多xx语言的编程群,而且大都是挑人多的加,一旦编程中出现了一点小错误,就立马到群里提问,这是一个很不好的习惯,假如说群里有人在线,为你解决了这个问题,那么你独立解决问题的能力就降低了一分,假如没人在线,你就可能面临着等待,或者把问题放这,不去管它,这样积累的后果你是知道的,最好的方式就是动用搜索引擎,不需要等待,还可以锻炼独立解决问题的能力。还有一点,许多新人反应说许多知识搜索不到,我很负责任的说,不是搜索不到,是你不会使用搜索引擎,至少我现在在编程上还没有遇到过搜索不到某个知识点的情况,对于搜索的使用技巧,如果你还不知道,去搜索吧。
总之,有问题,就要去搜索。
顺便说句,加很多群不是一个好习惯,群里并不能让你学到太多知识,他的功能在于能找到一群有共同话题的朋友,真实的情况是大多时间都在时一起闲扯一些与编程无关的话题。
4>.知道如何看书:
无论是电子书还是纸做的书,都会有页码,要做好学习的计划,每天看多少页?这倒不是,不要忽略目录这个好东西,先认真看下一本书的前言和目录,了解本书的知识点的分布,这样有利于更快的融入这本书,然后按章节作学习计划,按页来你就不怕把一个知识点切成两半?笔者看书时第一遍喜欢浏览,也就是走马观花的看,花一上午或一下午从头把书悠闲的翻一遍,不求记住知识点,只求记住几个名词,知道书里面有这些东西,给大脑一个模糊的印象。
从第二遍开始认真看,不放过任何一句话,碰到不明白的名词,没关系,搜索解决。看书要及时复习,推荐“看五退三”(笔者自造的词)式看书,也就是说一次看五页,下次看书式再向后退回三页,这样可以起到很好的复习效果,遇到确实看不懂的地方,也不要停留太长时间,很有可能当你继续向下看,再返回这个问题时,发现你已经可以理解了,这种情况很常见。
代码是一定要亲手调试一遍的,要亲手输入一个字符一个字符的输入,不是机械的复制粘贴,复制粘贴的后果就是你自己感觉学的差不多都理解了,然后到上机亲手写代码时,要么写不出来,要么一运行报错一堆。所以,书上的每段代码都要亲自调试。
对于代码报错,作为新手,正常的不能再正常的一件事,这里说两点,注意单词的拼写错误和符号是不是在英文状态下输入的;还有就是坚持自己找出代码错误,坚持,代码报错不求人,自己解决。
5>.要”像”个高手:
在写这几个字的时候我还是在担心等等这句话会不会造成误解,像个高手,并不是让你打肿脸充胖子,而是一种激励自己学习的一种方法,具体就是,要多帮助其他新人,帮助别人可以提高自己的话就不说了,在论坛或群,你可能遇到新人们各种各样的问题,要么代码报错自己检查不出错误,或者想解决某个问题却找不到方法等等,诸如此类的问题,如果你能解决,一定要记得解答一下,不断这样下去,你在你的圈子里说话就会越来越有分量,别人也就更信任你的能力,正式由于这种信任,也渐渐使你背负上了一种高手的责任感,别人请教问题我能不会?即使出于虚荣心,我们也得不断学习,维护我们在别人心中高手的形象,这样也就达到了刺激自己不断学习的目的。
但是需要记住几点;
一:不要误导其他新人,自己不确定的知识不要回答;
二:对于那些弱爆了的问题,你已经回答过很多遍了,如果别人没指明让你回答,那么就把这个机会让给别人吧,确实没必要再在这些弱爆了的问题上浪费时间;
三:每天冒泡回答问题的时间不要过长,否则会影响到你的正常学习进度;
四:发现自己错了就要勇敢承认,等高手出来吐槽时只会让你更难堪,不要以为新手好忽悠,当新手有天成为高手时,会记得当初是谁在挖坑让他跳。
6>.需要具备的态度:
–①:恒心,专注,相信自己。每当看到有人告诉新人学习方法讲要有恒心,要学会坚持不懈之类的我就想吐槽,做什么事不需要这样的态度?编程,要有激情,要有想象力,不局限于书本上的知识点,大胆实验,尝试把已经学习的话知识点组合成新的知识点,就拿C语言的链表来说,几乎所有的C语言入门书都把链表作为单独的一个知识点,如果说所有的书都取消链表这个知识点,当你学完指针、结构体、再告诉你malloc函数的用法,你能想到可以组合成链表这有趣的知识。
–②:学会稳定自己的情绪,当在论坛或群意见不合,或者有人无理取闹时,不要动怒,立即潜水,因为没必要动怒,谁对谁非,旁观者自然能看到。
⑶ 姣曚笟鐢熷繀鐪婸ython鐖铏涓婃坠鎶宸
Python蹇阃熶笂镓嬬殑7澶ф妧宸
Python蹇阃熶笂镓嬬埇铏镄7澶ф妧宸
1銆佸熀链鎶揿彇缃戦〉
get鏂规硶
post鏂规硶
2銆佷娇鐢ㄤ唬鐞咺P
鍦ㄥ紑鍙戠埇铏杩囩▼涓缁忓父浼氶亣鍒癐P琚灏佹帀镄勬儏鍐碉纴杩欐椂灏遍渶瑕佺敤鍒
浠g悊IP锛
鍦╱rllib 2鍖呬腑链埘roxy Handler绫伙纴 阃氲繃姝ょ被鍙浠ヨ剧疆浠g悊
璁块梾缃戦〉锛屽备笅浠g爜鐗囨碉细
3銆丆ookies澶勭悊
cookies鏄镆愪簺缃戠珯涓轰简杈ㄥ埆鐢ㄦ埛韬浠姐佽繘琛宻ession璺熻釜钥
鍌ㄥ瓨鍦ㄧ敤鎴锋湰鍦扮粓绔涓婄殑鏁版嵁(阃氩父缁忚繃锷犲瘑) 锛 python鎻愪緵浜
cookie lib妯″潡鐢ㄤ簬澶勭悊cookies锛 cookie lib妯″潡镄勪富瑕佷綔
鐢ㄦ槸鎻愪緵鍙瀛桦偍cookie镄勫硅薄锛 浠ヤ究浜庝笌urllib 2妯″潡閰嶅悎浣
鐢ㄦ潵璁块梾Internet璧勬簮銆
浠g爜鐗囨碉细
鍏抽敭鍦ㄤ簬Cookie Jar() 锛 瀹幂敤浜庣$悊HTTP cookie鍊笺佸瓨鍌
HTTP璇锋眰鐢熸垚镄刢ookie銆佸悜浼犲嚭镄凥TTP璇锋眰娣诲姞cookie
镄勫硅薄銆傛暣涓猚ookie閮藉瓨鍌ㄥ湪鍐呭瓨涓锛 瀵笴ookie Jar瀹炰緥杩
琛屽瀮鍦惧洖鏀跺悗cookie涔熷皢涓㈠け锛 镓链夎繃绋嬮兘涓嶉渶瑕佸崟镫铡绘搷浣
镓嫔姩娣诲姞cookie锛
4銆佷吉瑁呮垚娴忚埚櫒
镆愪簺缃戠珯鍙嶆劅鐖铏镄勫埌璁匡纴浜庢槸瀵圭埇铏涓寰嬫嫆缁濊锋眰銆傛墍浠ョ敤
urllib 2鐩存帴璁块梾缃戠珯缁忓父浼氩嚭鐜癏TTP Error 403锛
Forbidden镄勬儏鍐点
瀵规湁浜沨eader瑕佺壒鍒鐣欐剰锛 Server绔浼氶拡瀵硅繖浜沨eader
锅氭镆ワ细
1.User-Agent链変簺Server鎴朠roxy浼氭镆ヨュ硷纴 鐢ㄦ潵鍒
鏂鏄钖︽槸娴忚埚櫒鍙戣捣镄凴equest銆
2.Content-Type鍦ㄤ娇鐢≧EST鎺ュ彛镞讹纴 Server浼氭镆ヨ
鍊硷纴 鐢ㄦ潵纭瀹欻TTP Body涓镄勫唴瀹硅ユ庢牱瑙f瀽銆
杩欐椂鍙浠ラ氲繃淇鏀筯ttp鍖呬腑镄删eader𨱒ュ疄鐜帮纴 浠g爜鐗囨靛备笅
5銆侀獙璇佺爜镄勫勭悊
瀵逛簬涓浜涚亩鍗旷殑楠岃瘉镰侊纴鍙浠ヨ繘琛岀亩鍗旷殑璇嗗埆銆傛垜浠鍙杩涜岃繃涓
浜涚亩鍗旷殑楠岃瘉镰佽瘑鍒锛屼絾鏄链変簺鍙崭汉绫荤殑楠岃瘉镰侊纴姣斿12306
锛屽彲浠ラ氲繃镓撶爜骞冲彴杩涜屼汉宸ユ墦镰侊纴褰撶劧杩欐槸瑕佷粯璐圭殑銆
6銆乬zip铡嬬缉
链夋病链夐亣鍒拌繃镆愪簺缃戦〉锛屼笉璁烘庝箞杞镰侀兘鏄涓锲涔辩爜銆傚搱鍝堬纴闾
璇存槑浣犺缮涓岖煡阆撹稿归eb链嶅姟鍏锋湁鍙戦佸帇缂╂暟鎹镄勮兘锷涳纴 杩椤彲
浠ュ皢缃戠粶绾胯矾涓娄紶杈撶殑澶ч噺鏁版嵁娑埚噺60%浠ヤ笂銆傝繖灏ゅ叾阃傜敤浜
XML web链嶅姟锛 锲犱负XML鏁版嵁镄勫帇缂╃巼鍙浠ュ緢楂樸
浣嗘槸涓鑸链嶅姟鍣ㄤ笉浼氢负浣犲彂阃佸帇缂╂暟鎹锛岄櫎闱炰綘锻婅瘔链嶅姟鍣ㄤ綘鍙
浠ュ勭悊铡嬬缉鏁版嵁銆
浜庢槸闇瑕佽繖镙蜂慨鏀逛唬镰侊细
杩欐槸鍏抽敭锛氩垱寤篟equest瀵硅薄锛 娣诲姞涓涓狝ccept-
encoding澶翠俊鎭锻婅瘔链嶅姟鍣ㄤ綘鑳芥帴鍙枧zip铡嬬缉鏁版嵁銆
铹跺悗灏辨槸瑙e帇缂╂暟鎹锛
7銆佸氱嚎绋嫔苟鍙戞姄鍙
鍗旷嚎绋嫔お鎱㈢殑璇濓纴灏遍渶瑕佸氱嚎绋嬩简锛岃繖閲岀粰涓绠鍗旷殑绾跨▼姹犳ā𨱒
杩欎釜绋嫔簭鍙鏄绠鍗曞湴镓揿嵃浜1-10锛屼絾鏄鍙浠ョ湅鍑烘槸骞跺彂镄勚
铏界劧璇碢ython镄勫氱嚎绋嫔緢楦¤倠锛 浣嗘槸瀵逛簬鐖铏杩欑岖绣缁滈戠箒鍨
锛岃缮鏄鑳戒竴瀹氱▼搴︽彁楂樻晥鐜囩殑銆
⑷ 30天Python入门技巧大学生都来看
零基础学Python
30天系统化的课程讲解,构建清晰的python知识框架,零基础入门!
卡片式学习、新手零基础入门、内容通俗易懂。循序渐进学习Python概念与语法知识点,每天一课,碎片化学习python编程!每天解锁新的知识点、交互式学习效率翻倍,每个编程概念都有隐喻,快速了解Python语法!图文并茂讲解得非常很清晰,也不会感到无聊,题型也是有易到难循序渐进,一步一步让我对编程充满了信心!交互式练习挖空题,有答案提示,对新手友好~
完成课程呈现卡片式进度,点击任意一张卡片可以回顾对应的知识点加深记忆!不知不觉学会好多代码知识,代码卡、概念卡。支持电脑网页端同步学习,可以敲代码做题!每节课的学习重点总结,学完课程缺乏编程练习?NO!这里还有百题斩,强化巩固学习效果!终于有更多练习的机会了,姐妹们都给我冲鸭!