Python數據分析(基礎)

 

 

目錄:python

Python基礎:數組

  • 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。

操做:建立、索引、級聯、合併

相關文章
相關標籤/搜索