⑴ python常用包及主要功能
Python常用包:NumPy數值計算、pandas數據處理、matplotlib數據可視化、sciPy科學計算、Scrapy爬蟲、scikit-learn機器學習、Keras深度學習、statsmodels統計建模計量經濟。
NumPy是使用Python進行科學計算的基礎包,Numpy可以提供數組支持以及相應的高效處理函數,是Python數據分析的基礎,也是SciPy、Pandas等數據處理和科學計算庫最基本的函數功能庫,且其數據類型對Python數據分析十分有用。
pandas 是python的一個數據分析包,是基於NumPy 的一種工具,該工具是為了解決數據分析任務而創建的。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。
Matplotlib是強大的數據可視化工具和作圖庫,是主要用於繪制數據圖表的Python庫,提供了繪制各類可視化圖形的命令字型檔、簡單的介面,可以方便用戶輕松掌握圖形的格式,繪制各類可視化圖形。
SciPy是一組專門解決科學計算中各種標准問題域的包的集合,包含的功能有最優化、線性代數、積分、插值、擬合、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算等,這些對數據分析和挖掘十分有用。
Scrapy是專門為爬蟲而生的工具,具有URL讀取、HTML解析、存儲數據等功能,可以使用Twisted非同步網路庫來處理網路通訊,架構清晰,且包含了各種中間件介面,可以靈活地完成各種需求。
Scikit-Learn是Python常用的機器學習工具包,提供了完善的機器學習工具箱,支持數據預處理、分類、回歸、聚類、預測和模型分析等強大機器學習庫,其依賴於Numpy、Scipy和Matplotlib等。
Keras是深度學習庫,人工神經網路和深度學習模型,基於Theano之上,依賴於Numpy和Scipy,利用它可以搭建普通的神經網路和各種深度學習模型,如語言處理、圖像識別、自編碼器、循環神經網路、遞歸審計網路、卷積神經網路等。
Statsmodels是Python的統計建模和計量經濟學工具包,包括一些描述統計、統計模型估計和推斷。
⑵ Python基本語法都有哪些
1.關於編碼:
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字元串都是 unicode 字元串。 當然你也可以為源碼文件指定不同的編碼:
# -*- coding: cp-1252 -*-
2.標識符:
第一個字元必須是字母表中字母或下劃線,其他的部分由字母、數字和下劃線組成。
標識符對大小寫敏感。
在 Python 3 中,可以用中文作為變數名,非 ASCII 標識符也是允許的了。
3.保留字:
保留字即關鍵字,我們不能把它們用作任何標識符名稱。
Python 的標准庫提供了一個 keyword 模塊,可以輸出當前版本的所有關鍵字:
代碼:
import keyword
keyword.kwlist
結果:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
4.關於注釋:
單行注釋以 # 開頭
多行注釋可以用多個 # 號,還有 ''' 和 """
5.縮進與多行語句:
Python最具特色的就是使用縮進來表示代碼塊,不需要使用大括弧 {} 。
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠(\)來實現多行語句,例如:
代碼:total = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\),例如:
代碼:total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
6.數字(Number)類型:
Python中數字有四種類型:整數、布爾型、浮點數和復數。
int (整數), 如 1, 只有一種整數類型 int,表示為長整型,沒有 python2 中的 Long。
bool (布爾), 如 True。
float (浮點數), 如 1.23、3E-2
complex (復數), 如 1 + 2j、 1.1 + 2.2j
7.字元串:
python中單引號和雙引號使用完全相同。
使用三引號('''或""")可以指定一個多行字元串。
轉義符 '\'
反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
按字面意義級聯字元串,如"this " "is " "string"會被自動轉換為this is string。
字元串可以用 + 運算符連接在一起,用 * 運算符重復。
Python 中的字元串有兩種索引方式,從左往右以 0 開始,從右往左以 -1 開始。
Python中的字元串不能改變。
Python 沒有單獨的字元類型,一個字元就是長度為 1 的字元串。
字元串的截取的語法格式如下:變數[頭下標:尾下標:步長]
代碼示例:
#!/usr/bin/python3
str='Runoob'
print(str) # 輸出字元串
print(str[0:-1]) # 輸出第一個到倒數第二個的所有字元
print(str[0]) # 輸出字元串第一個字元
print(str[2:5]) # 輸出從第三個開始到第五個的字元
print(str[2:]) # 輸出從第三個開始後的所有字元
print(str * 2) # 輸出字元串兩次
print(str + '你好') # 連接字元串
print('hello\nrunoob') # 使用反斜杠(\)+n轉義特殊字元
print(r'hello\nrunoob') # 在字元串前面添加一個 r,表示原始字元串,不會發生轉義
8.空行:
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行並不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在於分隔兩段不同功能或含義的代碼,便於日後代碼的維護或重構。
記住:空行也是程序代碼的一部分。
9.等待用戶輸入input:
執行下面的程序在按回車鍵後就會等待用戶輸入:
input("\n\n按下 enter 鍵後退出。")
以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。
10.同一行顯示多條語句:
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
11.代碼組:
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。
像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。
我們將首行及後面的代碼組稱為一個子句(clause)。
12.Print輸出:
Print 輸出
print 默認輸出是換行的,如果要實現不換行需要在變數末尾加上 end="":
代碼:
x="a"
y="b"
# 換行輸出
print( x )
print( y )
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
13.import 與 from...import
在 python 用 import 或者 from...import 來導入相應的模塊。
將整個模塊(somemole)導入,格式為: import somemole
從某個模塊中導入某個函數,格式為: from somemole import somefunction
從某個模塊中導入多個函數,格式為: from somemole import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from somemole import *
代碼:
導入 sys 模塊
import sys
print ('命令行參數為:')
for i in sys.argv:
print (i)
print ('\n python 路徑為',sys.path)
導入 sys 模塊的 argv,path 成員
from sys import argv,path # 導入特定的成員
print('path:',path) # 因為已經導入path成員,所以此處引用時不需要加sys.path
14.命令行參數:
很多程序可以執行一些操作來查看一些基本信息,Python可以使用-h參數查看各參數幫助信息:
代碼:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
15.一個有用的函數:help( )
調用 python 的 help() 函數可以列印輸出一個函數的文檔字元串:
# 如下實例,查看 max 內置函數的參數列表和規范的文檔
>>> help(max)
……顯示幫助信息…… 按下 : q 兩個按鍵即退出說明文檔
如果僅僅想得到文檔字元串:
>>> print(max.__doc__) # 注意,doc的前後分別是兩個下劃線
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.
⑶ python 8個常用內置函數解說
8個超好用內置函數set(),eval(),sorted(),reversed(),map(),rece(),filter(),enumerate()
python中有許多內置函數,不像print那麼廣為人知,但它們卻異常的強大,用好了可以大大提高代碼效率。
這次來梳理下8個好用的python內置函數
1、set()
當需要對一個列表進行去重操作的時候,set()函數就派上用場了。
用於創建一個集合,集合里的元素是無序且不重復的。集合對象創建後,還能使用並集、交集、差集功能。
2、eval()之前有人問如何用python寫一個四則運算器,輸入字元串公式,直接產生結果。用eval()來做就很簡單:eval(str_expression)作用是將字元串轉換成表達式,並且執行。
3、sorted()在處理數據過程中,我們經常會用到排序操作,比如將列表、字典、元組裡面的元素正/倒排序。這時候就需要用到sorted() ,它可以對任何可迭代對象進行排序,並返回列表。對列表升序操作:
對元組倒序操作:
使用參數:key,根據自定義規則,按字元串長度來排序:
根據自定義規則,對元組構成的列表進行排序:
4、reversed()如果需要對序列的元素進行反轉操作,reversed()函數能幫到你。reversed()接受一個序列,將序列里的元素反轉,並最終返回迭代器。
5、map()做文本處理的時候,假如要對序列里的每個單詞進行大寫轉化操作。這個時候就可以使用map()函數。
map()會根據提供的函數,對指定的序列做映射,最終返回迭代器。也就是說map()函數會把序列里的每一個元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個例子,對列表裡的每個數字作平方處理:
6、rece()前面說到對列表裡的每個數字作平方處理,用map()函數。那我想將列表裡的每個元素相乘,該怎麼做呢?這時候用到rece()函數。
rece()會對參數序列中元素進行累積。第一、第二個元素先進行函數操作,生成的結果再和第三個元素進行函數操作,以此類推,最終生成所有元素累積運算的結果。再舉個例子,將字母連接成字元串。
你可能已經注意到,rece()函數在python3里已經不再是內置函數,而是遷移到了functools模塊中。這里把rece()函數拎出來講,是因為它太重要了。
7、filter()一些數字組成的列表,要把其中偶數去掉,該怎麼做呢?
filter()函數輕松完成了任務,它用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象。filter()函數和map()、rece()函數類似,都是將序列里的每個元素映射到函數,最終返回結果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個場景,同時列印出序列里每一個元素和它對應的順序號,我們用enumerate()函數做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數用於對序列里的元素進行順序標注,返回(元素、索引)組成的迭代器。再舉個例子說明,對字元串進行標注,返回每個字母和其索引。
⑷ 盤點Python常用的模塊和包
模塊
1.定義
計算機在開發過程中,代碼越寫越多,也就越難以維護,所以為了編寫可維護的代碼,我們會把函數進行分組,放在不同的文件里。在python里,一個.py文件就是一個模塊。
2.優點:
提高代碼的可維護性。
提高代碼的復用,當模塊完成時就可以在其他代碼中調用。
引用其他模塊,包含python內置模塊和其他第三方模塊。
避免函數名和變數名等名稱沖突。
python內建模塊:
1.sys模塊
2.random模塊
3.os模塊:
os.path:講解
https://www.cnblogs.com/yufeihlf/p/6179547.html
數據可視化
1.matplotlib :
是Python可視化程序庫的泰斗,它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。比如pandas和Seaborn就是matplotlib的外包,它們讓你能用更少的代碼去調用 matplotlib的方法。
訪問:
https://matplotlib.org/
顏色:
https://www.cnblogs.com/darkknightzh/p/6117528.html
教程:
https://wizardforcel.gitbooks.io/matplotlib-user-guide/3.1.html
2.Seaborn:
它是構建在matplotlib的基礎上的,用簡潔的代碼來製作好看的圖表。Seaborn跟matplotlib最大的區別就是它的默認繪圖風格和色彩搭配都具有現代美感。
訪問:
http://seaborn.pydata.org/index.html
3.ggplot:
gplot 跟 matplotlib 的不同之處是它允許你疊加不同的圖層來完成一幅圖
訪問:
http://ggplot.yhathq.com/
4.Mayavi:
Mayavi2完全用Python編寫,因此它不但是一個方便實用的可視化軟體,而且可以方便地用Python編寫擴展,嵌入到用戶編寫的Python程序中,或者直接使用其面向腳本的API:mlab快速繪制三維圖
訪問:http://code.enthought.com/pages/mayavi-project.html
講解:https://blog.csdn.net/ouening/article/details/76595427https://www.jianshu.com/p/81e6f4f1cdd8
5.TVTK:
TVTK庫對標準的VTK庫進行包裝,提供了Python風格的API、支持Trait屬性和numpy的多維數組。
VTK (http://www.vtk.org/) 是一套三維的數據可視化工具,它由C++編寫,包涵了近千個類幫助我們處理和顯示數據
講解:https://docs.huihoo.com/scipy/scipy-zh-cn/tvtk_intro.html
機器學習
1.Scikit-learn
是一個簡單且高效的數據挖掘和數據分析工具,易上手,可以在多個上下文中重復使用。它基於NumPy, SciPy 和 matplotlib,開源,可商用(基於 BSD 許可)。
訪問:
講解:https://blog.csdn.net/finafily0526/article/details/79318401
2.Tensorflow
最初由谷歌機器智能科研組織中的谷歌大腦團隊(Google Brain Team)的研究人員和工程師開發。該系統設計的初衷是為了便於機器學習研究,能夠更快更好地將科研原型轉化為生產項目。
相關推薦:《Python視頻教程》
Web框架
1.Tornado
訪問:http://www.tornadoweb.org/en/stable/
2.Flask
訪問:http://flask.pocoo.org/
3.Web.py
訪問:http://webpy.org/
4.django
https://www.djangoproject.com/
5.cherrypy
http://cherrypy.org/
6.jinjs
http://docs.jinkan.org/docs/jinja2/
GUI 圖形界面
1.Tkinter
https://wiki.python.org/moin/TkInter/
2.wxPython
https://www.wxpython.org/
3.PyGTK
http://www.pygtk.org/
4.PyQt
https://sourceforge.net/projects/pyqt/
5.PySide
http://wiki.qt.io/Category:LanguageBindings::PySide
科學計算
教程
https://docs.huihoo.com/scipy/scipy-zh-cn/index.html#
1.numpy
訪問
http://www.numpy.org/
講解
https://blog.csdn.net/lm_is_dc/article/details/81098805
2.sympy
sympy是一個Python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數展開、矩陣運算等等計算問題
訪問
https://docs.sympy.org/0.7.1/guide.html#guide
講解
https://www.jianshu.com/p/339c91ae9f41
解方程
https://www.cnblogs.com/zyg123/p/10549354.html
3.SciPy
官網
https://www.scipy.org/
講解
https://blog.csdn.net/wsp_1138886114/article/details/80444621
4.pandas
官網
http://pandas.pydata.org/
講解
https://www.cnblogs.com/linux-wangkun/p/5903945.html
5.blaze
官網
http://blaze.readthedocs.io/en/latest/index.html
密碼學
1.cryptography
https://pypi.python.org/pypi/cryptography/
2.hashids
http://www.oschina.net/p/hashids
3.Paramiko
http://www.paramiko.org/
4.Passlib
https://pythonhosted.org/passlib/
5.PyCrypto
https://pypi.python.org/pypi/pycrypto
6.PyNacl
http://pynacl.readthedocs.io/en/latest/
爬蟲相關
requests
http://www.python-requests.org/
scrapy
https://scrapy.org/
pyspider
https://github.com/binux/pyspider
portia
https://github.com/scrapinghub/portia
html2text
https://github.com/Alir3z4/html2text
BeautifulSoup
https://www.crummy.com/software/BeautifulSoup/
lxml
http://lxml.de/
selenium
http://docs.seleniumhq.org/
mechanize
https://pypi.python.org/pypi/mechanize
PyQuery
https://pypi.python.org/pypi/pyquery/
creepy
https://pypi.python.org/pypi/creepy
gevent
一個高並發的網路性能庫
http://www.gevent.org/
圖像處理
bigmoyan
http://scikit-image.org/
Python Imaging Library(PIL)
http://www.pythonware.com/procts/pil/
pillow:
http://pillow.readthedocs.io/en/latest/
自然語言處理
1.nltk:
http://www.nltk.org/
教程
https://blog.csdn.net/wizardforcel/article/details/79274443
2.snownlp
https://github.com/isnowfy/snownlp
3.Pattern
https://github.com/clips/pattern
4.TextBlob
http://textblob.readthedocs.io/en/dev/
5.Polyglot
https://pypi.python.org/pypi/polyglot
6.jieba:
https://github.com/fxsjy/jieba
資料庫驅動
mysql-python
https://sourceforge.net/projects/mysql-python/
PyMySQL
https://github.com/PyMySQL/PyMySQL
PyMongo
https://docs.mongodb.com/ecosystem/drivers/python/
pymongo
MongoDB庫
訪問:https://pypi.python.org/pypi/pymongo/
redis
Redis庫
訪問:https://pypi.python.org/pypi/redis/
cxOracle
Oracle庫
訪問:https://pypi.python.org/pypi/cx_Oracle
SQLAlchemy
SQL工具包及對象關系映射(ORM)工具
訪問:http://www.sqlalchemy.org/
peewee,
SQL工具包及對象關系映射(ORM)工具
訪問:https://pypi.python.org/pypi/peewee
torndb
Tornado原裝DB
訪問:https://github.com/bdarnell/torndb
Web
pycurl
URL處理工具
smtplib模塊
發送電子郵件
其他庫暫未分類
1.PyInstaller:
是一個十分有用的第三方庫,它能夠在Windows、Linux、 Mac OS X 等操作系統下將 Python 源文件打包,通過對源文件打包, Python 程序可以在沒有安裝 Python 的環境中運行,也可以作為一個 獨立文件方便傳遞和管理。
2.Ipython
一種互動式計算和開發環境
講解
https://www.cnblogs.com/zzhzhao/p/5295476.html
命令
ls、cd 、run、edit、clear、exist
⑸ python工具有哪些
第一款:最強終端 Upterm
它是一個全平台的終端,可以說是終端里的IDE,有著強大的自動補全功能,之前的名字叫作:BlackWindow。有人跟他說這個名字不利於社區推廣,改名叫Upterm之後現在已經17000+Star了。
第二款:互動式解釋器 PtPython
一個互動式的Python解釋器,支持語法高亮、提示,甚至是VIM和emacs的鍵入模式。
第三款:包管理必備 Anaconda
強烈推薦:Anaconda。它能幫你安裝許多麻煩的東西,包括:Python環境、pip包管理工具、常用的庫、配置好環境路徑等等。這些小事情小白自己一個個去做的話,容易遇到各種問題,也容易造成挫敗感。如果你想用Python搞數據方面的事情,安裝它就可以了,它甚至開發了一套JIT的解釋器Numba。所以Anaconda有了JIT之後,對線上科學計算效率要求比較高的東西也可以搞定了。
第四款:編輯器 Sublime3
如果你是小白的話,推薦從PyCharm開始上手,但是有時候寫一些輕量的小腳本,就會想到輕量級一點的工具。Sublime3很多地方都有了極大的提升,並且用起來比原來還要簡單,配合安裝Anaconda或CodeIntel插件,可以讓Sublime3擁有近乎IDE的體驗。
第五款:前端在線編輯器 CodeSandbox
雖然這個不算是真正意義上的Python開發工具,但如果後端工程師想要寫前端的話,這個在線編輯器太方便了,節省了後端工程師的生命。不用安裝npm的幾千個包了,它已經在雲端完成了,才讓你直接就可以上手寫代碼、看效果。對於React、Vue這些主流前端框架都支持。
第六款:Python Tutor
Python
Tutor是一個免費教育工具,可幫助學生攻克編程學習中的基礎障礙,理解每一行源代碼在程序執行時在計算機中的過程。通過這個工具,教師或學生可以直接在web瀏覽器中編寫Python代碼,並逐步可視化地運行程序。
第七款:IPython
如何進行互動式編程?沒錯,就是通過IPython。IPython相對於Python自帶的shell要好用的多,並且能夠支持代碼縮進、TAB鍵補全代碼等功能。如果進行互動式編程,這是不可缺少的工具。
第八款:Jupyter Notebook
Jupyter
Notebook就像一個草稿本,能將文本注釋、數學方程、代碼和可視化內容全部組合到一個易於共享的文檔中,以Web頁面的方式展示,它是數據分析、機器學習的必備工具。
第九款:Pycharm
Pycharm是程序員常常使用的開發工具,簡單、易用,並且能夠設置不同的主題模式,根據自己的喜好來設置代碼風格。
第十款:Python Tutor
這個工具可能對初學者比較有用,而對於中高級程序員則用處較少。這個工具的特色是能夠清楚的理解每一行代碼是如何在計算機中執行的,中高級程序員一般通過分步調試可以實現類似的功能。這個工具對於最初接觸Python、最初來學習編程的同學還是非常有用的,初學者可以體驗一下。
⑹ 常用的python庫有哪些
10個頂級且實用的python庫
1、Dash
Dash是比較新的軟體包,它是用純python構建數據可視化app的理想選擇,因此特別適合處理數據的任何人。Dash是Flask、Plotly.js和React.js的混合體。
2、Pygame
Pygame是SDL多媒體庫的python裝飾器,SDL是一個跨平台開發庫,旨在提供對以下內容的低級介面:音頻、鍵盤、滑鼠、游戲桿、基於OpenGL和Direct3D的圖形硬體。
Pygame具有高度的可移植性,幾乎可以在所有平台和操作系統上運行。盡管它具有完善的游戲引擎,但您也可以使用此庫直接從python腳本播放MP3文件。
3、Pillow
Pillow專門用於處理圖像,您可以使用該庫創建縮略圖,在文件格式之間轉換、旋轉、應用濾鏡、顯示圖像等等。如果您需要對許多圖像執行批量操作,這是理想的選擇。
4、Colorama
Colorama允許你在終端使用顏色,非常適合python腳本,文檔簡短而有趣,可以在Colorama PyPi頁面上找到。
5、JmesPath
在python中使用JSON非常容易,因為JSON在python字典上的映射非常好。此外,python帶有自己出色的json庫,用於解析和創建JSON。對我來說,這是它最好的功能之一,如果我需要使用JSON,可以考慮使用python。
JmesPath使python處理JSON更加容易,它允許您明確地指定如何從JSON文檔中提取元素。
6、Requests
Requests建立在世界上下載量最大的python庫urllib3上,它令Web請求變得非常簡單,功能強大且用途廣泛。
Requests可以完成您能想到的所有高級工作,比如:認證,使用cookie,執行POST、PUT、DELETE等,使用自定義證書,使用會話Session、使用代理等。
7、Simplejson
python中的本地json模塊有什麼問題?沒有!實際上,python的json是Simplejson。意思是:python採用了Simplejson的一個版本,並將其合並到每個發行版中,但是使用Simplejson具有一些優點:它適用於更多python版本、它比python隨附的版本更新頻率更高、它具有用C編寫的部分,因此非常快速。
8、Emoji
Emoji庫非常意思,但並非每個人都喜歡表情包,分析視角媒體數據時,Emoji包非常有用。
9、Python-dateutil
Python-dateutil模塊提供了對標准datetime模塊的強大擴展。我的經驗是:常規的python日期時間功能在哪裡結束,而Python-dateutil就出現了。
10、BeautifulSoup
如果您從網站上提取了一些HTML,則需要對其進行解析以獲取實際所需的內容。BeautifulSoup是一個python庫,用於從HTML和XML文件中提取數據。它提供了導航,搜索和修改解析樹的簡單方法。它非常強大,即使損壞了,也能夠處理各種HTML,這是一個非常強大的功能。
它的一些主要功能:
①BeautifulSoup會自動將傳入文檔轉換為Unicode,將傳出文檔轉換為UTF-8,您無需考慮編碼。
②BeautifulSoup位於流行的python解析器的頂部,使您可以嘗試不同的解析策略或提高靈活性。
⑺ 這幾個常用的python庫你需要知道
python可以說是近幾年最火熱、最實用的、最容易上手的工具之一了。功能強大、應用廣泛,可以幫你搜集工作數據,還能幫你下載音樂,電影,於是就掀起了一波學習python的大潮,小編也毫不猶豫的加入了。但是對於向小編一樣的小白來說,剛開始學習還是有些困難的,需要首先了解python的一些基礎知識。所以小編就整理了一些常用的python庫,希望對正在學習python的小夥伴有所幫助。
1.Matplotlib
Matplotlib是一個用於創建二維圖和圖形的底層庫。藉由它的幫助,你可以構建各種不同的圖標,從直方圖和散點圖到費笛卡爾坐標圖。matplotlib能夠與很多流行的繪圖庫結合使用。
2.Seaborn
Seaborn本質上是一個基於matplotlib庫的高級API。它包含更適合處理圖表的默認設置。此外,還有豐富的可視化庫,包括一些復雜類型,如時間序列、聯合分布圖(jointplots)和小提琴圖(violindiagrams)。
3.Plotly
Plotly是一個流行的庫,它可以讓你輕松構建復雜的圖形。該軟體包適用於互動式Web應用程,可實現輪廓圖、三元圖和三維圖等視覺效果
4.Bokeh
Bokeh庫使用JavaScript小部件在瀏覽器中創建互動式和可縮放的可視化。該庫提供了多種圖表集合,樣式可能性(stylingpossibilities),鏈接圖、添加小部件和定義回調等形式的交互能力,以及許多更有用的特性。
5.Pydot
Pydot是用純Python編寫的Graphviz介面,經常用於生成復雜的定向圖和無向圖,能夠顯示圖形的結構,對於構建神經網路和基於決策樹的演算法時非常有效。
6.pyecharts
是基於網路開源的Echarts而開發的Python可視化工具。
pyecharts功能非常強大,支持多達400+地圖;支持JupyterNotebook、JupyterLab;能夠輕松集成至Flask,Sanic,Django等主流Web框架
7.AutoViz
數據可視化,大多數都需要把數據讀取到內存中,然後對內存中的數據進行可視化。但是,對於真正令人頭疼的是一次又一次的開發讀取離線文件的數據介面。
而AutoViz就是用於解決這個痛點的,它真正的可以做到1行代碼輕松實現可視化。對於txt、json、csv等主流離線數據格式能夠同時兼容,經常用於機器學習、計算機視覺等涉及離線數據較多的應用場景。
8.Altair
Altair是一款基於Vega和Vega-Lite開發的統計可視化庫。具有API簡單、友好、一致等優點,使用起來非常方便,能夠用最簡短的代碼實現數據可視化。
9.cufflinks
cufflinks結合了plotly的強大功能和panda的靈活性,可以方便地進行繪圖,避免了數據可視化過程中,對數據存儲結構和數據類型進行復雜的麻煩。
10Pygal
Pygal 的名氣不是很大,使用圖形框架語法來構建圖像的。繪圖目標比較簡單,使用起來非常方便:實例化圖片;用圖片目標屬性格式化;用 figure.add() 將數據添加到圖片中即可。
⑻ python常見數據類型
一,python整數類型所表示的數據。
1,一般用以表示一類數值:所有正整數,0和負整數;
2,整型作為最常用的,頻繁參與計算的數據類型,在python3.5中解釋器會自動在內存中創建-5-3000之間的(包含5,不包含3000)整型對象,也就是說在該范圍內,相等都是同一個已經創建好的整型對象。范圍之外的即使相等也表示不同對象,該特性隨python版本而改變,不要過於依賴。
3,bool型繼承了int型,他是int的子類。
4,Python2中有長整型long,數值范圍更大,在python3中已取消,所有整型統一由int表示。
5,參與所有數值計算,數學運算,科學計算。這也是所有編程語言都有的數據類型,因為編程語言生而需要模擬人的思維,藉助數學方式,自動計算、更好的解決大量重復性的事務,因此數值類型、整數類型在編程語言中不可或缺。
6,支持二進制(0b\0B開頭),十進制,八進制(0o\0O),十六進制(0x\0X)
二,python整數和浮點型支持常規的數值運算
整數和浮點數都可參與的運算:+ - * / %(取余) //(整除) **(冪)
Python字元型:
python字元型表示的數據:
python3支持Unicode編碼,由字母、數字和符號組成的形式就叫字元串,更接近或者相同與人們文字元號表示,因此在信息表示和傳遞時它也是最受認可的形式。在程序編寫中也是非常常用,對應的可操作的方法也很多,很有意思。
字元串不可被修改,可以拼接等方法創建新字元串對象;
支持分片和下標操作;a[2:]
支持+拼接,*重復操作和成員關系in/not in;
表示形式:用單引號雙引號包含起來的符號;a = str(『sdfsdfsdf』) 或 r』\t\nabcd』 原始字元,Bytes:b』abcd』;
6,字元串屬於不可變數據類型,內部機制為了節省空間,相同的兩個字元串表示相同的一個對象。a = 『python』 b = 『python』 a is b :True
二, 字元串支持的運算方法
1,capitalize() :首字母大寫後邊的字母小寫 a = 『abcd』 b = a.capitalize() b:Abcd
2,casefold() lower():字母轉換為全小寫
3,center(width,fillchar) :居中,width填補的長度;fillchar添加的字元
a = a.center(10,』_』) //』____abcd____』 默認無fillchar填充空格
4,count(sub,star,end) :字母計數:sub要查詢的字元
5,encode(encoding=』utf-8』,errors=』strict』) 設置編碼
Errors :設置錯誤類型
6,endswith(suffix,star,end) : 若以suffix結尾返回True
7,expandtabs(8) :設置字元串中tab按鍵符的空格長度:』\tabcde』
8,find(sub,star,end) : 返回指定范圍內的字元串下標,未找到返回-1
9,index(sub,star,end) :返回指定范圍字元串下標未找到拋出異常
10,isalnum() :判斷字元串是否是字母或數字,或字母和數字組合
11,isalpha() :判斷是否全是字母
12,isdecimal() :判斷字元串是否是十進制數值
13,isdigit() :判斷字元串是否是數字
14,isidentifier() :判斷字元串中是否包含關鍵字
15,islower() :判斷是否全小寫
16,isnumeric() :判斷全是數字
17,isspace() :判斷是否是空格
18,isupper() 判斷是否大寫
19,istitle() :判斷是否首字母大寫
20,join(iterable) :把可迭代對象用字元串進行分割:a.join(『123』)
21,ljust(width,fillchar);rjust() :左對齊右對齊
22, upper() :將字元串改為大寫
23,split(sep=None,maxsplit=-1) :分割一個字元串,被選中字元在字元串中刪除
『ab1cd1efg』.split(『1』) :[『ab』,』cd』,』efg』]
三,字元串格式化:按照規格輸出字元串
format(*args,**kwargs) :args位置參數,kwargs關鍵字參數
『{0:.1f}』.format(123.468) :格式化參數,小數點後保留1位四捨五入
四,字元串操作符%
1,%s :格式化字元串 『abcd%sdef』%』dddd』
2,%d:格式化整數
3,%o格式化無符號八進制
4,%x格式化無符號十六進制
5,%f格式化定點數
6, %e: 科學計數法格式化定點數
7,%g 根據值大小自動選%f,%e
8, %G E X :大寫形式
五,格式化輔助命令:
m.n :m最小總寬度,n小數點後位數:』%12.4f』%23456.789
六,轉義字元:字元串前r避免轉義:r』\nhello\thi』
\n:換行符
\t:橫向製表符
\':'
\":"
\b:退格符
\r:回車
\v:縱向製表符
\f:換頁符
\o,\x:八進制和十六進制
\0:空字元串
Python列表list
一,Python的列表list類型表示的數據:
Python列表在cpython中被解釋為長度可變的數組,用其他對象組成的連續數組。
列表中元素可以是相同或不同的數據類型;
當列表元素增加或刪除時,列表對象自動進行擴展或收縮內存,保證元素之間沒有縫隙,總是連續的。
Python中的列表是一個序列,也是一個容器類型
創建列表:a = []; b = [1,』python』]; c = list(); d = list((1,3,4,5))
支持切片操作list[start,stop,step]
python列表常用方法
1,append添加單個元素:list.append(object); //a.append(『python』)
2,extend添加可迭代對象: list.extend(iterable); //a.extend(『abcde』/[1,2,3])
3,insert 插入元素:list.insert(index,object): 在index下標前插入元素//a.insert(2,』python』)
4,clear 清空所有元素:list.clear() //a.clear()
5,pop 刪除並返回一個元素:list.pop(index) //默認刪除默認一個元素
remove 刪除指定元素:list.remove(v) ,v元素不存在報錯 //a.remove(『c』)
7,count 返回這個值在列表中數量:list.count(value)
8, 淺拷貝一個新列表:list.()
9,sort:排序list.sort(reverse=False/True) :默認升序
排序函數:sorted(list)
10,reverse: 原地翻轉:list.reverse()
11,index(value,star,stop) :指定范圍內該值下標:list.index(2,0,5)
列表元素訪問:
下標訪問:list[1]
For循環遍歷
通過下標修改元素:list[2 ] = 『hello』
列表常用運算符:
1,比較運算符:從第一個元素開始對比
2,+ 拼接一個新列表:l1+ l2
3, 重復操作符:* ,多個列表拼接
成員關系操作符:in/ not in
邏輯運算符:and not or
列表常用的排序方法:
冒泡排序;選擇排序;快速排序;歸並排序
Python元組tuple
一,Python元組tuple數據類型表示的數據:
元組是受到限制的、不可改變的列表;
可以是同構也可以是異構;
元組是序列類型、是可迭代對象,是容器類型。
元組的創建: a = (1,2,3)或a=1,2,3; b = tuple(); c = tuple(iterable)
支持切片操作tuple[start,stop,step]
二,python元組常用方法
1,index(value,star,stop) :指定范圍內該值下標:tuple.index(2,0,5)
2,count(value) :值出現次數
三,支持運算:
1,比較運算符:從第一個元素開始對比
2,+ 拼接一個新元組:l1+ l2
3, 重復操作符:* ,多個元組拼接
4成員關系操作符:in/ not in
邏輯運算符:and not or
四,元組的訪問
下標操作;
For循環遍歷訪問。
Python字典類型
一,Python字典dict表示的數據:{key:value}
可根據關鍵字:鍵快速索引到對應的值;
字典是映射類型,鍵值對一一對應關系,不是序列;
字典元素是無序的;
字典是可迭代對象,是容器類型;
字典的創建:k = {}; k1={『keyword』:object}; k2 = dict();
K3 = dict(mapping); dict=(iterable)
二,字典的訪問:
通過key:k[『key』]
修改key對應的值:K[『key』] = value
For循環遍歷出來的是key;
For循環鍵值對:for I in d.items():
For 循環enumerate: for k,v in enumerate(k1):
In/not in 成員關系查詢鍵不支持查值
三,字典常用方法
get(key,de):獲取值:k.get(key,de) //若不存在則默認輸出de
pop(k,de):刪除一個鍵值對,不存在輸出de,未設置報錯;
keys() :返回字典所有key組成的序列:list(k.keys()) [1,2,3];
values():返回字典所有value組成的序列:list(k.values())
items():返回鍵值對組成的元組為元素的序列:(類set)list(k.items())
update(e):更新字典:e可是字典或兩元素組成的單位元素序列:e=[(5,6),(7,8)];
k.update(e)
clear():清空字典;
popitem()刪除某個鍵值對,若字典為空則報錯
() :淺拷貝
10, fromkeys(iterable,value=None):從可迭代對象創建字典
{}.fromkeys([1,2,3]) -----{1:None,2:None,3:None}
11,setdefault(k,d=None) :若key不存在則生成一個鍵值對
k.setdefault(『keyword』)
Python 集合set
集合表示的數據:
多個元素的無序組合,集合是無序的,集合元素是唯一的;
字典的鍵是由集合實現的;
集合是可迭代對象
集合創建:s = {1,2}; s1 = set(); s2 = set(iterable)
集合元素的訪問:
For 循環將集合所有元素全部訪問一遍,不重復
常用方法:
add(object):s.add(『hi』) 向集合添加一個元素
pop() :彈棧,集合為空則報錯:刪除任意一個元素;
clear():清空集合,返回一個空集合對象;
remove(object):刪除一個元素,不存在和報錯:s.remove(『hi』)
update(集合):更新另一個集合,元素不存在則不更新;
() :淺拷貝
集合的運算:
交集:s1&s2;
差集,補集:s1-s2;
並集:s1|s2;
Issubset():判斷是否是子集:s1.issubset(s2) s1是否s2的集合子集
Issuperset():判斷是否是父集:s1.issuperset()
不可變集合:
Frozenset():返回一個空的不可變集合對象
Frozenset(iterable):
S = frozenset(iterable)
Python序列類型共同特性
一,序列類型共同特性
python序列類型有:str字元串,list列表,tuple元組
都支持下標索引,切片操作;
下標都是從0開始,都可通過下標進行訪問;
擁有相同的操作符
二,支持的函數:
len(obj):返回對象長度;
list(iterable):將可迭代對象轉為列表;
tuple(iterable):將可迭代對象轉為元組;
str(ojb):將任何對象轉為字元串形式;
max(iterable): python3中元素要是同類型,python2中元素可異構:max([『a』,1])
min(iterable):和max類似;
sum(iterable,star=0),求可迭代對象和,默認star為0,元素不能為字元串
sorted(iterable,key=None,reverse=False)
s=[(『a』,3),(『b』,2),(『c』,9)]
sorted(s,key=lambda s:s[1]) //按照數字排序
reversed(sequence):翻轉序列,返回迭代器
enumerate(iterable):返回enumerate對象,其元素都是一個元組(下標,值)
zip(iter1,iter2): zip([1,2],[3,4]) ----[(1,3),(2,4)]
序列類型的切片操作:
Slice:
L[index]; 訪問某個元素;
L[1:4]; 區間
L[star:stop:step]; 設置步長取區間元素
⑼ python常用的資料庫有哪些
主流的關系型資料庫:
1. MySQL:目前使用最廣泛的開源、多平台的關系型資料庫,支持事務、符合ACID、支持多數SQL規范。
2. SQL Server:支持事務、符合ACID、支持多數SQL規范,屬於商業軟體,需要注意版權和licence授權費用。
3. Oracle:支持事務,符合關系型資料庫原理,符合ACID,支持多數SQL規范,功能最強大、最復雜、市場佔比最高的商業資料庫。
4. Postgresql:開源、多平台、關系型資料庫,功能最強大的開源資料庫,需要Python環境,基於postgresql的time
scaleDB,是目前比較火的時序資料庫之一。
非關系型資料庫
Redis:開源、Linux平台、key-value鍵值型nosql資料庫,簡單穩定,非常主流的、全數據in-momory,定位於快的鍵值型nosql資料庫。
Memcaced:一個開源的、高性能的、具有分布式內存對象的緩存系統,通過它可以減輕資料庫負載,加速動態的web應用。
面向文檔資料庫以文檔的形式存儲,每個文檔是一系列數據項的集合,每個數據項有名稱與對應的值,主要產品有:
MongoDB:開源、多平台、文檔型nosql資料庫,最像關系型資料庫,定位於靈活的nosql資料庫。適用於網站後台資料庫、小文件系統、日誌分析系統。
⑽ Python編程常用軟體有哪些
1、終端:Upterm
Upterm簡略好用,它是一個全渠道的終端,能夠說是終端里的IDE,有著強壯的自動補全功能。
2、互動式解說器:PtPython
一個互動式的Python解說器。支持語法高亮、提示乃至是vim和emacs的鍵入模式。其實我們在課程里提供的在線終端也內置了ptPython。
3、包管理:Anaconda
能幫你裝置好許多麻煩的軟體,包括:Python環境、pip包管理東西、常用的庫、配置好環境路徑等等。用Python搞數據方面的工作,就裝置Anaconda就好了,它乃至開發了一套JIT的解說器Numba。所以Anaconda有了JIT之後,對線上科學計算功率要求比較高的東西也能夠搞了。
4、腳本引擎:QPython
QPython是一個能夠在安卓體繫上運行Python腳本引擎,整合了Python解說器、Console、編輯器和SL4A庫,在安卓設備上你照樣能夠玩轉Python。
5、編輯器:Sublime3
Sublime更新了真·無雙·三·零版別之後,有了極大的提高,而且用起來比本來還要簡略。配合裝置Anaconda或CodeIntel插件,就能夠讓Sublime具有近乎IDE的體會。Sublime的字體色彩烘托,像VSCodeAtom類的編輯器我總會覺得色彩會有點發烏、不鮮艷,就像在PS做的圖拿到瀏覽器里會不一樣,長時間看會不舒服乃至想吐
6、IPython
一個根據Python Shell的互動式解說器。它的自動補全非常好用,乃至用了它之後,很多程序員小夥伴們就不想再用自帶的Python shell啦。