目錄:python
Python基礎:數組
Numpy:簡述數據結構
Pandas:簡述app
1、 Python基礎:函數
1.1 文件讀取工具
1).打開文件
2).操做數據(讀、寫)
3).關閉文件 **編碼
打開文件:spa
fp = open(path, 打開方式, encoding=, errors='Ignore')翻譯
操做數據:對象
打開方式:
'r':表示只讀字符(readonly)
#'r+':在只讀的功能下,在追加一個寫的功能
'w':表示只寫字符(readwrite),第一次寫完,若是沒有關閉文件,繼續寫,那麼會將本來的內容覆蓋
#'w+':在只寫的功能下,在追加一個讀的功能
'a':表示追加內容
#'a+':在保留追加內容的同時,新增了一個讀的功能
'rb':表示只讀字節(二進制數據)
'wb':表示只寫字節(二進制數據)
encoding:
編碼集若是不顯示定義,對應:gbk
errors:
若是不寫,默認是報錯(編解碼不一致)
咱們也能夠定義爲ignore,這樣就不會報錯了,可是會出現亂碼
讀取文件中的數據:
fp = open(path, ‘r’)
content = fp.read() #讀取所有內容
content = fp.read(num) #讀取num個字節數
content = fp.readline() #讀取一行數據
content = fp.readlines() #讀取全部行,以一個列表的形式返回
print(content) #打印讀取到的內容
寫入數據到文件中:
fw = open(path, 'w')
fw.write(str1) #將變量str1中的內容寫入到path對應的文件中(覆蓋)
【注意】寫文件,若是文件不存在,先建立文件,再寫入內容;若是存在了,將之前的內容覆蓋
fw = open(path, 'a')
fw.write(str1) #將變量str1中的內容寫入到path對應的文件中(追加)
關閉文件:
fp.close() #關閉文件(釋放資源)
2.二、控制語句
1).判斷結構
分類:三種格式
①.
if 條件表達式:
語句塊
②.
if 條件表達式:
語句塊1
else:
語句塊2
③.
if 條件表達式1:
語句塊1
elif 條件表達式2:
語句塊2
elif 條件表達式3:
語句塊3
elif 條件表達式4:
語句塊4
else:
語句塊n
1.循環結構:
1).while循環:
四要素
①.初始化條件 能夠認爲是一個起始值(起點位置),代碼體現就是定義一個變量,只會執行一次
②.循環條件 獲得的確定是一個布爾值,True --> 循環繼續,False --> 循環結束 通常循環條件中都會用到
初始化條件的變量
③.迭代條件 不斷的去改變變量的值
④.循環體 須要重複執行的業務邏輯代碼
對於②、③、④而言可能都會被執行屢次
格式:
①
while ②:
④
③
執行流程:① -> ② -> ④ -> ③ -> ② -> ④ -> ③ -> ② -> 循環結束
False
2).break和continue的使用
對於break而言: 若是在循環中執行到break關鍵字,那麼就會馬上結束當前循環
對於continue而言: 若是在循環中執行到continue關鍵字,那麼就會馬上結束當次循環,進行下一次循環
3).無限循環(死循環)
解釋:循環操做若是循環條件一直爲True,整個循環永遠結束不了
死循環極其消耗系統資源,可是配合某些關鍵字(break),那麼這個無限循環仍是有意義的
對於while的死循環格式以下:
while True:
4).else的語法:
在循環結構的最後能夠配合else一塊兒使用,
若是整個循環是正常結束,程序必定會執行else中的代碼,
若是整個循環是經過break結束的,程序就不會執行else中的代碼
5).forin循環:
1).定義格式一:
for x in seq:
循環體
執行流程:
從seq容器中依次去除它內部的元素給到x,後續的循環體中有可能會用到x中臨時存儲的值,
等到seq容器中的元素所有被遍歷完成了,整個循環也就結束了!
①.能夠遍歷的容器有str、list、tuple、set、dict
②.若是是遍歷字典,只在for關鍵字後面定義一個變量的話,只能獲取到的是整個字典的鍵,
咱們通常定義兩個變量(k, v)來實現鍵和值的雙向獲取
2).range()函數
range()函數一旦執行完畢,會返回給我一個序列(容器)
格式:range(start, end, step)
舉例:
range(10): 獲得[0, 10)
range(0, 6): 獲得[0, 6)
range(0, 10, 2) 獲得[0, 2, 4, 6, 8]
3).定義格式2:
for x in range(num):
循環體
執行過程:
每次都會從num中取出一個整數值給到x,直到range容器中的全部值所有被遍歷執行過了,循環結束!
break和continue關鍵字一樣能夠在forin中被使用,做用和在while中是同樣的
else也能夠被配合使用
4).嵌套循環
格式:
while中能夠定義forin ①
while中也能夠定義while ②
forin中能夠定義forin ③
forin中也能夠定義while ④
最爲經常使用的兩層循環的格式是: ③
結論:
1).外層循環執行m次,內層循環執行n次,程序一共執行了m * n 次循環
2).外層循環走一次,內層循環所有執行一邊
3).外層循環中定義的變量,不要和內層循環中定義的變量重名
7).列表生成式
語法糖:
是一種既簡潔快捷的表達式。這種式子能夠給python的解釋器翻譯成爲業務邏輯比較複雜的代碼
如:
三元運算符:簡化if-else這種分支結構而出現的
列表生成式:它能夠速度,效率的幫助咱們生成一個新的列表
格式:
[expr for x in iterable(可迭代對象:list、tuple、set...)]
8).類型轉換函數:
int():
將字符串類型的整數值轉換爲一個int值
float():
將字符串類型的整數值,浮點值轉換爲一個float值
bool():
None:False
空字符串:False
空列表: False
空元祖: False
空集合: False
空字典: False
整數的0表示False,其他都是True
str():
能夠將整數、浮點數、布爾值、列表、元祖、集合、字典、None轉換成str
list():
能夠將元祖、集合、字符串轉換成列表
能夠將字典的鍵放入到一個列表中
tuple():
能夠將列表、集合、字符串轉換成元祖
能夠將字典的鍵放入到一個元祖中
set():
能夠將元祖、字典、字符串轉換成集合,可是會順便去重
dict():
能夠將相似如下的代碼轉換爲字典:
lt1 = [['name', 'zhangsan'],('age', 23),{123, '123'}]
print(dict(lt1))
9).ascii碼
在python中有兩個內置函數:
chr():將編碼值(整數),轉換爲對應的字符
ord():將字符,轉換爲對應的編碼值
三、函數
定義:將一段功能邏輯代碼,封裝到一塊區域中,這塊區域有本身單獨的名字(方法名),
以後若是想要執行次功能,只要經過方法名調用,就能夠實現了
函數是一種功能、行爲,一個方法只表示一個功能。
函數的定義格式:
def 函數名(形參列表):
方法體
方法的命名:
方法名也須要知足標識符的規則和規範
函數的返回值:
有返回值:
須要使用return關鍵字將方法最終執行之後的結果給到方法的調用處
在同一做用範圍內的return關鍵字後面不要去定義其它的代碼,由於永遠不可能被執行到
沒有返回值:
不須要使用return關鍵字,方法執行完就over
能夠定義return關鍵字,可是return後面什麼內容都不能寫,此時的return僅僅意味着方法結束
方法的參數:
方法的形參:
定義在def方法的小括號內的標識符,能夠有[0, +無窮]多個
方法的實參:
方法被調用時,顯示的傳入的具體數據,實參給到形參的過程,
實參是真正在方法體內用到的。
1).一旦定義了有參數的函數,在調用的時候,就必須顯示的傳遞參數(實參),個位和位置都是須要咱們注意的
2).函數的內部還能夠調用別的函數
3).python中能夠定義默認參數,
若是在調用函數時,不傳遞任何的參數,或者少傳,沒有接受到的所有使用默認值
4).python中的函數重載現象,定義在一個.py文件中的兩個函數,名字相同,
若是形參列表相同:那麼執行調用的是後者的內容
若是形參列表不相同:須要注意,只能調用第二個方法,若是調用第一個,直接報錯!
內部函數:
定義在某個函數的內部,它能夠獲取到外部函數的變量,
可是不能修改它,若是想要修改外部函數的變量,須要顯示的定義nonlocal關鍵字:nonlocal 變量名
全局變量:
直接定義在.py文件中的變量(函數的外部),能夠給任何一個函數所使用,
若是想要在某個函數中去修改全局變量的值,咱們能夠先定義global關鍵字:global 變量名
局部變量:
直接定義在函數的內部,只能被本身的函數所使用,
列表函數:
append:
追加一個元素到列表的末尾,固然也能夠追加一個列表,可是這個列表會充當一個末尾元素
extend:
追加一個元素到列表的末尾,固然也能夠追加一個列表,可是這個列表中的每個元素
都會依次追加到原列表最後
count:
計算列表中某相同元素的個數
index:
返回某個元素在列表中第一次出現的下標位置
insert:
插入某個元素到列表的某個位置,原列表的元素依次向後移
pop:
彈出某個索引位置上的元素,默認彈出末尾元素,一次一個
remove:
刪除列表中的某個匹配的元素,一個只能刪除一個,最早匹配到的先刪除
clear:
清空列表元素
reverse:
對列表進行反轉
copy:
拷貝列表中的全部元素,返回一個新的列表(與舊的原來一致) ---》 深拷貝
sort:
將列表中的元素進行排序,默認升序排列 --》 參數:reverse=False
若是將參數:reverse=True 就能夠進行降序排列了
字典函數:
items:
返回key-value對集
keys:
返回鍵集
values:
返回值集
get:
經過鍵找值
dict1.update(dict2):
將dict2中的鍵值對複製給到dict1,若是有重複的鍵,那就將dict2中的鍵對應的值
覆蓋原來的值
copy:
深拷貝
popitem:
彈出最後的一組鍵值對
pop:
傳入鍵,獲得值,將鍵值對彈出
clear:
清空字典
高階函數:
1).map(fn, lsd1, [lsd2])
參數一:fn --> 函數對象
參數二和三: lsd1&lsd2 ---> 序列對象(列表、元祖、集合、字符串)
功能:將fn函數做用與lsd1中的每個元素,獲得一個可迭代對象(mapobject)返回
2).reduce(fn, lsd):
參數1:fn --> 函數對象
參數2:lsd --> 序列對象
功能:將第一次的執行結果和lsd序列中的後續元素繼續運算,....
3).filter(fn, lsd):
解釋:
參數1:fn是一個函數對象
參數2:lsd是一個序列對象
功能:將fn函數做用於lsd序列對象的每個元素上,若是fn函數的返回結果爲True,那麼就保留這個元素
若是返回是Flase,那麼就捨棄這個元素;最終返回的仍是一個惰性序列(filterobject類型)
4).sorted函數:
可是在它以前咱們已經學過了list中的sort函數,它們要作的事情是如出一轍的,
可是list中的sort執行之後會直接影響list自己,
而sorted函數執行完畢以後,會返回一個新的容器對象,不會影響自己
2.一、數據類型
整數型(int)、浮點數(小數、float)、布爾型(真假、bool)、字符串(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set)、
3.一、numpy
NumPy系統是Python的一種開源的數值計算擴展,一個強大的N維數組對象Array,比較成熟的(廣播)函數庫,用於整合C/C++和Fortran代碼的工具包,實用的線性代數、傅里葉變換和隨機數生成函數,numpy和稀疏矩陣運算包scipy配合使用更增強大。
屬性:
ndim:維度
shape:形狀(各維度的長度)
size:總長度
dtype:元素類型
基本操做:
索引、切片、級聯、變形、切分、拷貝
聚合:
4.1pandas
Python Data Analysis Library 或 pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而建立的,pandas 歸入了大量庫和一些標準的數據模型,提供了高效地操做大型數據集所需的工具,pandas提供了大量能使咱們快速便捷地處理數據的函數和方法,它使Python成爲強大而高效的數據分析環境的重要因素之一。
Series:能夠把Series當作一個定長的有序字典,能夠經過shape,size,index,values等獲得series的屬性
能夠經過head(),tail()快速查看Series對象的樣式,可使用pd.isnull(),pd.notnull(),或自帶isnull(),notnull()函數檢測缺失數據,Series對象自己及其索引都有一個name屬性。
操做:建立、索引、切片
dataframe:
最經常使用的方法是傳遞一個字典來建立。DataFrame以字典的鍵做爲每一【列】的名稱,以字典的值(一個數組)做爲每一列。
此外,DataFrame會自動加上每一行的索引(和Series同樣)。
同Series同樣,若傳入的列與字典的鍵不匹配,則相應的值爲NaN。
操做:建立、索引、級聯、合併