python基礎篇之小白滾躺式入坑
入坑理由上一篇文章已經說過了,今天來詳細談談我是怎麼操作學習python的吧!
關於Anaconda及jupyter notebook的安裝請看猴子老師的文章,步驟很詳細清楚
初學python者自學anaconda的正確姿勢是什麼??jupyter notebook 可以做哪些事情?新手請看這裡,雖然以上文章已經很清楚,但是對於小白來說,特別是不太懂計算機軟體操作的小夥伴也還是有一定困難的,我在安裝中很幸運沒有遇見什麼報錯的問題,但是安裝完我一度在想我是否已經安裝好了,怎麼樣判斷安裝是否成功,一般而言可以創建環境,執行命令可以得到相對於的反應,安裝應該沒有大問題了,當然這過程中要學會把自己的問題去搜索,英語網站看不到就去找度娘,先解決軟體的問題是大事,注意一點,jupyter notebook設置路徑的時候不能有中文!
開始我的學習總結,歡迎大家入坑
首先介紹一下基本的一些注意事項:
注釋的三種形式: #號和 、 """
行與縮進:注意縮進的間隙一致,不然容易導致運行出現錯誤
下面介紹一下整個文章的七個主要內容:
數據類型、條件控制、循環語句、迭代器與生成器、函數、數據結構、模塊
一、Python3 中的數據類型:
- Number(數字)
- String(字元串)
- List(列表)
- Tuple(元組)
- Sets(集合)
- Dictionary(字典)
- 布爾(Ture False)
- 空值(None)
1、Number(數字):作用於存儲數值,不允許改變的,如果改變數字數據類型值,將重新分配內存空間。
數字有四種類型:整數(int)、長整數、浮點數(float)和複數(complex)
1.1 整數:1
長整數:比較大的整數
浮點數:0.5
複數:3+5j
1.2算術運算符「+(加)、-(減)、*(乘)、/(除以)、%(餘數)、**(冪次方)、//(除後取整數)」
具體案例見下:
2、String(字元串)
2.1 字元串用「」來表示,比如這個代碼:
這個的表現形式就是字元串,最終的結果是引號裡面的數據或者文字。
2.2 字元串的格式化:
2.3 Python轉義字元
(在行尾時)-續行符,\-反斜杠符號,-退格(Backspace),
-換行,
-回車,f-換頁
轉義符有很多,我只摘錄了一些常用的,後面運算和學習會用得上,這個還是需要去記憶的。
2.4 Python三引號:python三引號允許一個字元串跨多行,字元串中可以包含換行符、製表符以及其他特殊字元。
三引號讓程序員從引號和特殊字元串的泥潭裡面解脫出來,自始至終保持一小塊字元串的格式是所謂的WYSIWYG(所見即所得)格式的。
這點這個我還沒有操作過,所以不是太能理解,意思應該是運用三引號,打多行代碼不需要各種字元串等之間的轉換,這個在下一步python基礎的鞏固練習中會進一步加深,有小夥伴理解的話可以告訴我一下
字元串還有很多內建函數,這個不一一舉例,當鞏固練習了
2.5 字元串可以用+將字元合併
3、List(列表):
序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推得到我們想要的搜引數據。
3.1列表一般是以 list[ ] 的形式出現,下圖就是通過索引得出結果的:
以下案例通過列表定義進行更新、刪除等操作,需要注意的是在這之前需要記住關鍵字,不需要死記硬背,加強練習就可以了
這個是比較基礎的,是我們的練習題,我還沒有自己舉一反三的出題做題,後期會自己仔細琢磨在最基礎的知識上深化讓自己更加熟悉。
3.2Python列表腳本操作符
列表對 + 和 * 的操作符與字元串相似。+ 號用於組合列表,* 號用於重複列表
3.3 Python列表截取與拼接
3.4 函數(以下的函數需要不斷練習才會比較熟悉,可以結合Excel裡面函數的用法來記憶和使用,會有一些異曲同工之處):
3.4.1 len() 方法返回列表元素個數
3.4.2 list() 方法用於將元組轉換為列表
3.4.3 append() 方法用於在列表末尾添加新的對象
3.4.4 count() 方法用於統計某個元素在列表中出現的次數
3.4.5 extend() 函數用於在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
3.4.6 index() 函數用於從列表中找出某個值第一個匹配項的索引位置
3.4.7 insert() 函數用於將指定對象插入列表的指定位置
3.4.8 pop() 函數用於移除列表中的一個元素(默認最後一個元素),並且返回該元素的值
3.4.9 remove() 函數用於移除列表中某個值的第一個匹配項
3.4.10 reverse() 函數用於反向列表中元素
3.4.11 sort() 函數用於對原列表進行排序,如果指定參數,則使用比較函數指定的比較函數
3.4.12 clear() 函數用於清空列表,類似於 del a[:]
3.4.13 copy() 函數用於複製列表,類似於 a[:]
4、Tuple(元組)
元組與列表不同之處:在於元組的元素不能修改。
元組使用{},列表使用[]。
元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可
元組中只包含一個元素時,需要在元素後面添加逗號,否則括弧會被當作運算符使用,具體看下面案例:
元組與字元串類似,下標索引也是從0開始,可以進行截取,組合等,在使用方法上面和列表還是有很多相同之處
4.1 修改元組:元組中的元素值是不允許修改的,但我們可以對元組進行連接組合
4.2 刪除元組:元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組
4.3 元組索引,截取:元祖索引跟列表很像這裡就不多介紹
5、Sets(集合)
集合(set)是一個無序不重複元素的序列,基本功能是進行測試和刪除重複元素,對於上網爬取數據需要的清洗數據方法比較類似。
可以使用大括弧 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
6、Dictionary(字典):
6.1 字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括弧({})中
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字元串,數字或元組
6.2字典內置函數&方法
6.2.1Python 字典 clear() 函數用於刪除字典內所有元素
6.2.2字典 copy() 函數返回一個字典的淺複製
這裡還涉及到一個直接賦值和深淺拷貝的一個區別,在於後期對原數據進行重新賦值,直接賦值的數據會隨之改變,但是深拷貝的值對應一級目錄不會隨之重新賦值而改變,具體可以看Runoob里的知識拓展
6.2.3 字典 fromkeys() 函數用於創建一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值
6.2.4 字典 in 操作符用於判斷鍵是否存在於字典中,如果鍵在字典dict里返回true,否則返回false
6.2.5 字典 items() 方法以列表返回可遍歷的(鍵, 值) 元組數組
6.2.6 字典 keys() 方法以列表返回一個字典所有的鍵
6.2.7 字典 update() 函數把字典dict2的鍵/值對更新到dict里
6.2.8 字典 pop() 方法刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值
6.2.9 字典 popitem() 方法隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對)。
如果字典已經為空,卻調用了此方法,就報出KeyError異常
同時字典還支持無限嵌套的,就行excel函數里if和count也支持嵌套,不過excel一般只支持15個內部嵌套,要換種方式使用函數,可以達到無限嵌套,具體看看下面的例子:
7、布爾(Ture False)
8、空值(None)
斐波納契數列
二、條件控制(if elif else)
Python條件語句是通過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。
可以通過下圖來簡單了解條件語句的執行過程(這個和數學課本里判斷一個事件是否正確是一樣的道理):
條件判斷只要知道自己想得到什麼答案,理解判斷語句的用法就沒有什麼大問題了
以下兩個例子是給出的條件在不同的地方,所有最後的結果運行也不一樣
三、循環語句(for while)
3.1 無限循環
3.2 Break和continue函數的使用和區別:
break 語句可以跳出 for 和 while 的循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行
continue語句被用來告訴Python跳過當前循環塊中的剩餘語句,然後繼續進行下一輪循環
3.3 while 循環使用 else 語句:在 while … else 在條件語句為 false 時執行 else 的語句塊
3.4 for 語句:Python for循環可以遍歷任何序列的項目,如一個列表或者一個字元串
3.5 range()函數:如果你需要遍曆數字序列,可以使用內置range()函數。它會生成數列
1.5 pass 語句:Python pass是空語句,是為了保持程序結構的完整性。
pass 不做任何事情,一般用做佔位語句,如下實例:
拓展:使用內置 enumerate 函數進行遍歷
四、迭代器與生成器:iter() 和 next()
定義:迭代器是Python最強大的功能之一,是訪問集合元素的一種方式,是一個可以記住遍歷的位置的對象;迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退;字元串,列表或元組對象都可用於創建迭代器。
4.1 生成器:使用了 yield 的函數被稱為生成器(generator)
跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回yield的值。並在下一次執行 next()方法時從當前位置繼續運行。
五、函數:
定義一個函數:
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
- 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括弧 ()。
- 任何傳入參數和自變數必須放在圓括弧中間,圓括弧之間可以用於定義參數。
- 函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
- 函數內容以冒號起始,並且縮進。
- return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None
5.1 不可變數據類型和可變類型
字元串、數字,元祖這3種是不可變數據類型,其他的都是可變數據類型
5.2 必需參數
必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
調用printme()函數,你必須傳入一個參數,不然會出現語法錯誤
5.3 關鍵字參數
關鍵字參數和函數調用關係緊密,函數調用使用關鍵字參數來確定傳入的參數值。
使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值
5.4 默認參數:調用函數時,如果沒有傳遞參數,則會使用默認參數
5.5 不定長參數:一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數
基本語法如下:
def functionname([formal_args,] *var_args_tuple ):
"函數_文檔字元串" function_suite return [expression]加了星號(*)的變數名會存放所有未命名的變數參數。如果在函數調用時沒有指定參數,它就是一個空元組。我們也可以不向函數傳遞未命名的變數。如下實例:
5.6 匿名函數:
python 使用 lambda 來創建匿名函數。
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。
- lambda 只是一個表達式,函數體比 def 簡單很多。
- lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
- lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。
- 雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。
5.7 return語句:return [表達式] 語句用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None
5.8 Python的作用域一共有4種:
- L (Local) 局部作用域
- E (Enclosing) 閉包函數外的函數中
- G (Global) 全局作用域
- B (Built-in) 內建作用域
以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。
5.8.1 全局變數和局部變數
定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全局作用域。
局部變數只能在其被聲明的函數內部訪問,而全局變數可以在整個程序範圍內訪問。調用函數時,所有在函數內聲明的變數名稱都將被加入到作用域
六、數據結構
堆棧:後進先出
隊列:先進先出
排序字典OrderedDict:
計數器Counter:
七、模塊:我們的腳本是用 python 解釋器來編程,把這一系列的定義保存在py後綴的文件夾裡面,類似於Excel保存的文件一樣,再次打開定義的數據會再次出現
看看下面的兩個練習題就明白了:
以上就是我整個Python的學習和思路了,整個知識梳理是按照學習的過程來寫的,有一些自己的心得體會,現在學習感覺是學會了,但是真的把學到的可以完全運用起來的話,還需要多加練習,熟悉代碼,熟悉代碼的運用原理。
因為自己工作中Excel用的比較多,所以會拿Python里的一些相互對比,Excel也是用函數寫的,只是運行數據太大比較容易卡,相對於Python在一些使用上面還是有相似之處,可以進行對比。這樣梳理出來也會更容易相互理解。
推薦閱讀:
※R語言實戰第八章:回歸
※SQL初級數據分析(基於Microsoft Access)
※一篇文章入門Python
※大數據之數據分析精進之路:起跑
※Python 數據分析學習路線
TAG:數據分析 |