python自帶pandas嗎,python pandas用法

本文目錄一覽:

python–pandas合併與連接

append 方法根據行在原數據框添加新的數據框。

如果想要合併後的數據框索引重寫排序,可以設置參數 ignore_index=True 。

concat 函數是panda自帶的,可以按行或按列合併多個pandas數據框。

按行合併多個數據框,需要注意的是 objs參數接受一個可迭代對象 。concat函數默認按行合併。

設置 ignore_index=True ,使合併後的數據框索引重新排序。

按行合併時,concat對所有的列進行全連接(參數 join=’outer’ ),沒有的列會填充為NaN。

設置參數 join=’inner’ ,可以只保留共有的列。

設置參數 axis=1 或 axis=’columns’ ,可以按列合併多個數據框。

merge 方法根據列或索引連接數據框。

當兩個數據框只有一個相同列時, merge 方法會自動根據相同列進行內連接, on 參數可以省略。

設置參數 how=[‘left’,’right’,’outer’,’inner’,’cross’] ,可以完成不同類型的連接。

當兩個數據框沒有相同列時,需要設置 left_on 和 right_on 參數,表示按這兩列進行連接。

如果需要根據數據框的索引進行連接,需要根據需求設置參數 left_index=True 或者 right_index=True 。

設置 suffixes ,可以給相同的列名添加後綴。默認後綴是 _x , _y 。

join 方法與 merge 方法作用相同,基本上 merge 方法已經可以完成所有的連接操作。

join 方法對按索引連接更方便而已。

當連接的兩個數據框中沒有相同列時,可以直接按索引進行左連接。

同樣,可以設置 how 參數,控制連接的行為。

當數據框中有相同列時,需要設置後綴。

python自帶及pandas、numpy數據結構(一)

1.python自帶數據結構:序列(如list)、映射(如字典)、集合(set)。

以下只介紹序列中的list:

創建list:

list1 = []

list1 = [1,2,3,4,5,6,7,8,9] #逗號隔開

list2 = [[1,2],[3,4],[5,6],[7,8]] #list2長度(len(list2))為2,list2[0] = [1,2]

liststring = list(「thisisalist」) #只用於創建字元串列表

索引list:

e = list1[0] #下標從零開始,用中括弧

分片list:

es = list1[0:3]

es = list1[0:9:2] #步長在第二個冒號後

list拼接(list1.append(obj)、加運算及乘運算):

list長度:

list每個元素乘一個數值:

list2 = numpy.dot(list2,2)

list類似矩陣相乘(每個元素對應相乘取和):

list3 = numpy.dot(list1,list1)

#要求相乘的兩個list長度相同

list3 = numpy.dot(list2,list22)

#要求numpy.shape(list2)和numpy.shape(list22)滿足「左行等於右列」的矩陣相乘條件,相乘結果numpy.shape(list3)滿足「左列右行」

2.numpy數據結構:

Array:

產生array:

data=np.array([[1, 9, 6], [2, 8, 5], [3, 7, 4]])

data=np.array(list1)

data1 = np.zeros(5) #data1.shape = (5,),5列

data1 = np.eye(5)

索引array:

datacut = data[0,2] #取第零行第二列,此處是6

切片array:

datacut = data[0:2,2] # array([6, 5])

array長度:

data.shape

data.size

np.shape(data)

np.size(data)

len(data)

array拼接:

#括弧內也有一個括弧(中括弧或者小括弧)!

d = np.concatenate((data,data))

d = np.concatenate((data,data),axis = 1) #對應行拼接

array加法:逐個相加

array乘法:

d = data data #逐個相乘

d = np.dot(data,data) #矩陣相乘

d = data 3 #每個元素乘3

d = np.dot(data,3) #每個元素乘3

array矩陣運算:

取逆 : np.linalg.inv(data)

轉置:data.T

所有元素求和 : np.sum(data)

生成隨機數:np.random.normal(loc=0, scale=10, size=None)

生成標準正態分布隨機數組:np.random.normal(size=(4,4))

生成二維隨機數組:

np.random.multivariate_normal([0,0],np.eye(2))

生成範圍在0到1之間的隨機矩陣(M,N):

np.random.randint(0,2,(M,N))

Matrix:

創建matrix:

mat1 = np.mat([[1, 2, 3], [4, 5, 6]])

mat1 = np.mat(list)

mat1 = np.mat(data)

matrix是二維的,所有+,-,*都是矩陣操作。

matrix索引和分列:

mat1[0:2,1]

matrix轉置:

np.transpose(mat1)

mat1.transpose()

matrix拼接:

np.concatenate([mat1,mat1])

np.concatenate([mat1,mat1],axis = 1)

numpy數據結構總結:對於numpy中的數據結構的操作方法基本相同:

創建:np.mat(list),np.array(list)

矩陣乘:np.dot(x,y)

轉置:x.T or np.transpose(x)

拼接:np.concatenate([x,y],axis = 1)

索引:mat[0:1,4],ary[0:1,4]

3.pandas數據結構:

Series:

創建series:

s = pd.Series([[1,2,3],[4,5,6]],index = [『a』,『b』])

索引series:

s1 = s[『b』]

拼接series:

pd.concat([s1,s1],axis = 1) #也可使用s.append(s)

DataFrame:

創建DaraFrame:

df = pd.DataFrame([[1,2,3],[1,2,3]],index = [‘a’,’b’],columns = [‘x’,’y’,’z’])

df取某一列:

dfc1 =df.x

dfc1 = df[『x』]

dfc2 = df.iloc[:,0] #用.iloc方括弧里是數字而不是column名!

dfc2 = df.iloc[:,0:3]

df取某一行:

dfr1 = df.iloc[0]

df1 = df.iloc[0:2]

df1 = df[0:2] #這種方法只能用於取一個區間

df取某個值:

dfc2 = df.iloc[0,0]

dfc2 = df.iloc[0:2,0:3]

Python數據分析庫有哪些

Python數據分析必備的第三方庫:

1、Pandas

Pandas是Python強大、靈活的數據分析和探索工具,包含Serise、DataFrame等高級數據結構和工具,安裝Pandas可使Python中處理數據非常快速和簡單。

Pandas是Python的一個數據分析包,Pandas最初使用用作金融數據分析工具而開發出來,因此Pandas為時間序列分析提供了很好的支持。

Pandas是為了解決數據分析任務而創建的,Pandas納入了大量的庫和一些標準的數據模型,提供了高效的操作大型數據集所需要的工具。Pandas提供了大量是我們快速便捷的處理數據的函數和方法。Pandas包含了高級數據結構,以及讓數據分析變得快速、簡單的工具。

2、Numpy

Numpy可以提供數組支持以及相應的高效處理函數,是Python數據分析的基礎,也是Scipy、Pandas等數據處理和科學計算庫最基本的函數功能庫,且其數據類型對Python數據分析十分有用。

Numpy提供了兩種基本的對象:ndarray和ufunc。ndarray是存儲單一數據類型的多維數組,而ufunc是能夠對數組進行處理的函數。

3、Matplotlib

Matplotlib是強大的數據可視化工具和作圖庫,是主要用於繪製數據圖表的Python庫,提供了繪製各類可視化圖形的命令字型檔、簡單的介面,可以方便用戶輕鬆掌握圖形的格式,繪製各類可視化圖形。

Matplotlib是Python的一個可視化模塊,他能方便的只做線條圖、餅圖、柱狀圖以及其他專業圖形。

Matplotlib是基於Numpy的一套Python包,這個包提供了豐富的數據繪圖工具,主要用於繪製一些統計圖形。

4、SciPy

SciPy是一組專門解決科學計算中各種標準問題域的包的集合,包含的功能有最優化、線性代數、積分、插值、擬合、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算等,這些對數據分析和挖掘十分有用。

SciPy是一款方便、易於使用、專門為科學和工程設計的Python包,它包括統計、優化、整合、線性代數模塊、傅里葉變換、信號和圖像處理、常微分方程求解器等。Scipy依賴於Numpy,並提供許多對用戶友好的和有效的數值常式,如數值積分和優化。

5、Keras

Keras是深度學習庫,人工神經網路和深度學習模型,基於Theano之上,依賴於Numpy和Scipy,利用它可以搭建普通的神經網路和各種深度學習模型,如語言處理、圖像識別、自編碼器、循環神經網路、遞歸審計網路、卷積神經網路等。

6、Scrapy

Scrapy是專門為爬蟲而生的工具,具有URL讀取、HTML解析、存儲數據等功能,可以使用Twisted非同步網路庫來處理網路通訊,架構清晰,且包含了各種中間件介面,可以靈活的完成各種需求。

7、Gensim

Gensim是用來做文本主題模型的庫,常用於處理語言方面的任務,支持TF-IDF、LSA、LDA和Word2Vec在內的多種主題模型演算法,支持流式訓練,並提供了諸如相似度計算、信息檢索等一些常用任務的API介面。

Python數據分析: 初識Pandas,理解Pandas實現和原理

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理

01 重要的前言

這段時間和一些做數據分析的同學閑聊,我發現數據分析技能入門階段存在一個普遍性的問題,很多憑著興趣入坑的同學,都能夠很快熟悉Python基礎語法,然後不約而同的一頭扎進《利用Python進行數據分析》這本經典之中,硬著頭皮啃完之後,好像自己什麼都會了一點,然而實際操作起來既不知從何操起,又漏洞百出。

至於原因嘛,理解不夠,實踐不夠是兩條老牌的攔路虎,只能靠自己來克服。還有一個非常有意思且經常被忽視的因素——陷入舉三反一的懵逼狀態。

什麼意思呢?假如我是個旱鴨子,想去學游泳,教練很認真的給我剖析了蛙泳的動作,扶著我的腰讓我在水裡劃拉了5分鐘,接著馬上給我講解了蝶泳,又是劃拉了5分鐘,然後又硬塞給我潛泳的姿勢,依然是劃拉5分鐘。最後,教練一下子把我丟進踩不到底的泳池,給我吶喊助威。

作為一個還沒入門的旱鴨子,教練傾囊授了我3種游泳技巧,讓我分別實踐了5分鐘。這樣做的結果就是我哪一種游泳技巧也沒學會,只學會了喝水。當一個初學者一開始就陷入針對單個問題的多種解決方法,而每一種方法的實踐又淺嘗輒止,在面對具體問題時往往會手忙腳亂。

拿Pandas來說,它的多種構造方式,多種索引方式以及類似效果的多種實現方法,很容易把初學者打入舉三反一的懵逼狀態。所以,盡量避開這個坑也是我寫Pandas基礎系列的初衷,希望通過梳理和精簡知識點的方式,給需要的同學一些啟發。目前暫定整個基礎系列分為4篇,基礎篇過後便是有趣的實戰篇。

下面開始進入正題(我真是太嘮叨了)。

02 Pandas簡介

江湖上流傳著這麼一句話——分析不識潘大師(PANDAS),縱是老手也枉然。

Pandas是基於Numpy的專業數據分析工具,可以靈活高效的處理各種數據集,也是我們後期分析案例的神器。它提供了兩種類型的數據結構,分別是DataFrame和Series,我們可以簡單粗暴的把DataFrame理解為Excel裡面的一張表,而Series就是表中的某一列,後面學習和用到的所有Pandas騷操作,都是基於這些表和列進行的操作(關於Pandas和Excel的形象關係,這裡推薦我的好朋友張俊紅寫的《對比EXCEL,輕鬆學習Python數據分析》)。

這裡有一點需要強調,Pandas和Excel、SQL相比,只是調用和處理數據的方式變了,核心都是對源數據進行一系列的處理,在正式處理之前,更重要的是謀定而後動,明確分析的意義,理清分析思路之後再處理和分析數據,往往事半功倍。

03 創建、讀取和存儲

1、創建

在Pandas中我們想要構造下面這一張表應該如何操作呢?

別忘了,第一步一定是先導入我們的庫——import pandas as pd

構造DataFrame最常用的方式是字典+列表,語句很簡單,先是字典外括,然後依次打出每一列標題及其對應的列值(此處一定要用列表),這裡列的順序並不重要:

左邊是jupyter notebook中dataframe的樣子,如果對應到excel中,他就是右邊表格的樣子,通過改變columns,index和values的值來控制數據。

PS,如果我們在創建時不指定index,系統會自動生成從0開始的索引。

2、 讀取

更多時候,我們是把相關文件數據直接讀進PANDAS中進行操作,這裡介紹兩種非常接近的讀取方式,一種是CSV格式的文件,一種是EXCEL格式(.xlsx和xls後綴)的文件。

讀取csv文件:

engine是使用的分析引擎,讀取csv文件一般指定python避免中文和編碼造成的報錯。而讀取Excel文件,則是一樣的味道:

非常easy,其實read_csv和read_excel還有一些參數,比如header、sep、names等,大家可以做額外了解。實踐中數據源的格式一般都是比較規整的,更多情況是直接讀取。

3、存儲

存儲起來一樣非常簡單粗暴且相似:

04 快速認識數據

這裡以我們的案例數據為例,迅速熟悉查看N行,數據格式概覽以及基礎統計數據。

1、查看數據,掐頭看尾

很多時候我們想要對數據內容做一個總覽,用df.head()函數直接可以查看默認的前5行,與之對應,df.tail()就可以查看數據尾部的5行數據,這兩個參數內可以傳入一個數值來控制查看的行數,例如df.head(10)表示查看前10行數據。

2、 格式查看

df.info()幫助我們一步摸清各列數據的類型,以及缺失情況:

從上面直接可以知道數據集的行列數,數據集的大小,每一列的數據類型,以及有多少條非空數據。

3、統計信息概覽

快速計算數值型數據的關鍵統計指標,像平均數、中位數、標準差等等。

我們本來有5列數據,為什麼返回結果只有兩列?那是因為這個操作只針對數值型的列。其中count是統計每一列的有多少個非空數值,mean、std、min、max對應的分別是該列的均值、標準差、最小值和最大值,25%、50%、75%對應的則是分位數。

05 列的基本處理方式

這裡,我們採用SQL四大法寶的邏輯來簡單梳理針對列的基本處理方式——增、刪、選、改。

溫馨提示:使用Pandas時,盡量避免用行或者EXCEL操作單元格的思維來處理數據,要逐漸養成一種列向思維,每一列是同宗同源,處理起來是嗖嗖的快。

1、增

增加一列,用df[『新列名』] = 新列值的形式,在原數據基礎上賦值即可:

2、刪:

我們用drop函數制定刪除對應的列,axis = 1表示針對列的操作,inplace為True,則直接在源數據上進行修改,否則源數據會保持原樣。

3、選:

想要選取某一列怎麼辦?df[『列名』]即可:

選取多列呢?需要用列表來傳遞:df[[『第一列』,『第二列』,『第三列』…]]

4、 改:

好事多磨,複雜的針對特定條件和行列的篩選、修改,放在後面結合案例細講,這裡只講一下最簡單的更改:df[『舊列名』] = 某個值或者某列值,就完成了對原列數值的修改。

06 常用數據類型及操作

1、字元串

字元串類型是最常用的格式之一了,Pandas中字元串的操作和原生字元串操作幾乎一毛一樣,唯一不同的是需要在操作前加上”.str”。

小Z溫馨提示:我們最初用df2.info()查看數據類型時,非數值型的列都返回的是object格式,和str類型深層機制上的區別就不展開了,在常規實際應用中,我們可以先理解為object對應的就是str格式,int64對應的就是int格式,float64對應的就是float格式即可。

在案例數據中,我們發現來源明細那一列,可能是系統導出的歷史遺留問題,每一個字元串前面都有一個「-」符號,又丑又無用,所以把他給拿掉:

一般來說清洗之後的列是要替換掉原來列的:

2、 數值型

數值型數據,常見的操作是計算,分為與單個值的運算,長度相等列的運算。

以案例數據為例,源數據訪客數我們是知道的,現在想把所有渠道的訪客都加上10000,怎麼操作呢?

只需要選中訪客數所在列,然後加上10000即可,pandas自動將10000和每一行數值相加,針對單個值的其他運算(減乘除)也是如此。

列之間的運算語句也非常簡潔。源數據是包含了訪客數、轉化率和客單價,而實際工作中我們對每個渠道貢獻的銷售額更感興趣。(銷售額 = 訪客數 X 轉化率 X 客單價)

對應操作語句:df[『銷售額』] = df[『訪客數』] * df[『轉化率』] * df[『客單價』]

但為什麼瘋狂報錯?

導致報錯的原因,是數值型數據和非數值型數據相互計算導致的。PANDAS把帶「%」符號的轉化率識別成字元串類型,我們需要先拿掉百分號,再將這一列轉化為浮點型數據:

要注意的是,這樣操作,把9.98%變成了9.98,所以我們還需要讓支付轉化率除以100,來還原百分數的真實數值:

然後,再用三個指標相乘計算銷售額:

3、時間類型

PANDAS中時間序列相關的水非常深,這裡只對日常中最基礎的時間格式進行講解,對時間序列感興趣的同學可以自行查閱相關資料,深入了解。

以案例數據為例,我們這些渠道數據,是在2019年8月2日提取的,後面可能涉及到其他日期的渠道數據,所以需要加一列時間予以區分,在EXCEL中常用的時間格式是』2019-8-3』或者』2019/8/3』,我們用PANDAS來實現一下:

在實際業務中,一些時候PANDAS會把文件中日期格式的欄位讀取為字元串格式,這裡我們先把字元串』2019-8-3』賦值給新增的日期列,然後用to_datetime()函數將字元串類型轉換成時間格式:

轉換成時間格式(這裡是datetime64)之後,我們可以用處理時間的思路高效處理這些數據,比如,我現在想知道提取數據這一天離年末還有多少天(『2019-12-31』),直接做減法(該函數接受時間格式的字元串序列,也接受單個字元串):

python如何下載pandas

pandas是一個開源的python庫,其強大的數據結構提供高性能數據操作和分析工具

利用pip安裝pandas

1、在cmd窗口輸入pip install pandas

2、在編輯器中輸入import pandas 看看會不會報錯,如不報錯則安裝成功

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257746.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:46
下一篇 2024-12-15 12:46

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論