關於在python中將pandas的信息

本文目錄一覽:

利用Python中的pandas如何寫入到excel指定的單元格中?

利用第三方庫:openpyxl 可以實現,示例代碼如下:

from openpyxl import Workbook

wb = Workbook()

ws = wb[‘sheet1’]

ws[‘C2’].value = 100

如何使用Python的Pandas庫繪製折線圖

我們經常會使用Python的Pandas繪製各種數據圖形,那麼如何使用它繪製折線圖呢?下面我給大家分享一下。

工具/材料

Pycharm

01

首先我們需要打開Excel軟件準備需要的數據,這裡多準備幾列數據,一列就是一條折線,如下圖所示

02

然後我們打開Pycharm軟件,新建Python文件,導入Pandas庫,接着將Excel中的數據讀取進數據集緩存,如下圖所示

03

接下來我們利用plot方法繪製折線圖,如下圖所示,這裡只添加了一列標題

04

運行文件以後我們就可以看到折線圖顯示出來了,但是比較的簡單,下面我們逐漸的豐富它

05

然後在plot方法中將excel裏面的多列標題都添加進來,如下圖所示

06

這次在運行文件的時候我們就可以看到折線圖上有多條線了,如下圖所示

07

接下來我們在為折線圖設置標題,X,Y坐標軸的內容,如下圖所示

08

然後通過plot方法下面的area方法對摺線圖的空白區域進行疊加填充,如下圖所示

09

最後我們運行完善好後的文件,就可以看到如下圖所示的折線圖了,到此我們的折線圖繪製也就完成了

如何利用Python中的Pandas庫繪製柱形圖

我們利用Python的Pandas庫可以繪製很多圖形,那麼如何繪製柱形圖呢?下面我給大家分享演示一下。

工具/材料

Pycharm

首先我們打開Excel文件,準備要生成柱形圖的數據表,如下圖所示

接下來在Python文件中導入pandas庫,然後將Excel文件加載到緩存對象中,如下圖所示

然後我們導入matplotlib下面的pyplot庫,如下圖所示,導入以後給它起一個別名

接下來我們通過pandas庫下面的bar來設置柱形圖的X,Y坐標軸,如下圖所示

然後通過pyplot的show方法將柱形圖進行展示出來,如下圖所示

接下來運行程序以後我們就看到柱形圖生成出來了,如下圖所示

然後如果我們想將柱形圖中的數據排序的話可以利用sort_values實現,如下圖所示

最後運行排序好後的程序,我們就可以看到柱形圖中的數據已經排序好了,如下圖所示

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用法

在Python中,pandas是基於NumPy數組構建的,使數據預處理、清洗、分析工作變得更快更簡單。pandas是專門為處理表格和混雜數據設計的,而NumPy更適合處理統一的數值數組數據。

使用下面格式約定,引入pandas包:

pandas有兩個主要數據結構:Series和DataFrame。

Series是一種類似於一維數組的對象,它由 一組數據 (各種NumPy數據類型)以及一組與之相關的 數據標籤(即索引) 組成,即index和values兩部分,可以通過索引的方式選取Series中的單個或一組值。

pd.Series(list,index=[ ]) ,第二個參數是Series中數據的索引,可以省略。

Series類型索引、切片、運算的操作類似於ndarray,同樣的類似Python字典類型的操作,包括保留字in操作、使用.get()方法。

Series和ndarray之間的主要區別在於Series之間的操作會根據索引自動對齊數據。

DataFrame是一個表格型的數據類型,每列值類型可以不同,是最常用的pandas對象。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。DataFrame中的數據是以一個或多個二維塊存放的(而不是列表、字典或別的一維數據結構)。

pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index為指定的列、行索引,並按照順序排列。

如果創建時指定了columns和index索引,則按照索引順序排列,並且如果傳入的列在數據中找不到,就會在結果中產生缺失值:

數據索引 :Series和DataFrame的索引是Index類型,Index對象是不可修改,可通過索引值或索引標籤獲取目標數據,也可通過索引使序列或數據框的計算、操作實現自動化對齊。索引類型index的常用方法:

重新索引 :能夠改變、重排Series和DataFrame索引,會創建一個新對象,如果某個索引值當前不存在,就引入缺失值。

df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns為新的行列自定義索引;fill_value為用於填充缺失位置的值;method為填充方法,ffill當前值向前填充,bfill向後填充;limit為最大填充量;copy 默認True,生成新的對象,False時,新舊相等不複製。

刪除指定索引 :默認返回的是一個新對象。

.drop() :能夠刪除Series和DataFrame指定行或列索引。

刪除一行或者一列時,用單引號指定索引,刪除多行時用列表指定索引。

如果刪除的是列索引,需要增加axis=1或axis=’columns’作為參數。

增加inplace=True作為參數,可以就地修改對象,不會返回新的對象。

在pandas中,有多個方法可以選取和重新組合數據。對於DataFrame,表5-4進行了總結

適用於Series和DataFrame的基本統計分析函數 :傳入axis=’columns’或axis=1將會按行進行運算。

.describe() :針對各列的多個統計匯總,用統計學指標快速描述數據的概要。

.sum() :計算各列數據的和

.count() :非NaN值的數量

.mean( )/.median() :計算數據的算術平均值、算術中位數

.var()/.std() :計算數據的方差、標準差

.corr()/.cov() :計算相關係數矩陣、協方差矩陣,是通過參數對計算出來的。Series的corr方法用於計算兩個Series中重疊的、非NA的、按索引對齊的值的相關係數。DataFrame的corr和cov方法將以DataFrame的形式分別返回完整的相關係數或協方差矩陣。

.corrwith() :利用DataFrame的corrwith方法,可以計算其列或行跟另一個Series或DataFrame之間的相關係數。傳入一個Series將會返回一個相關係數值Series(針對各列進行計算),傳入一個DataFrame則會計算按列名配對的相關係數。

.min()/.max() :計算數據的最小值、最大值

.diff() :計算一階差分,對時間序列很有效

.mode() :計算眾數,返回頻數最高的那(幾)個

.mean() :計算均值

.quantile() :計算分位數(0到1)

.isin() :用於判斷矢量化集合的成員資格,可用於過濾Series中或DataFrame列中數據的子集

適用於Series的基本統計分析函數,DataFrame[列名]返回的是一個Series類型。

.unique() :返回一個Series中的唯一值組成的數組。

.value_counts() :計算一個Series中各值出現的頻率。

.argmin()/.argmax() :計算數據最大值、最小值所在位置的索引位置(自動索引)

.idxmin()/.idxmax() :計算數據最大值、最小值所在位置的索引(自定義索引)

pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數。下表對它們進行了總結,其中read_csv()、read_table()、to_csv()是用得最多的。

在數據分析和建模的過程中,相當多的時間要用在數據準備上:加載、清理、轉換以及重塑。

在許多數據分析工作中,缺失數據是經常發生的。對於數值數據,pandas使用浮點值NaN(np.nan)表示缺失數據,也可將缺失值表示為NA(Python內置的None值)。

替換值

.replace(old, new) :用新的數據替換老的數據,如果希望一次性替換多個值,old和new可以是列表。默認會返回一個新的對象,傳入inplace=True可以對現有對象進行就地修改。

刪除重複數據

利用函數或字典進行數據轉換

df.head():查詢數據的前五行

df.tail():查詢數據的末尾5行

pandas.cut()

pandas.qcut() 基於分位數的離散化函數。基於秩或基於樣本分位數將變量離散化為等大小桶。

pandas.date_range() 返回一個時間索引

df.apply() 沿相應軸應用函數

Series.value_counts() 返回不同數據的計數值

df.aggregate()

df.reset_index() 重新設置index,參數drop = True時會丟棄原來的索引,設置新的從0開始的索引。常與groupby()一起用

numpy.zeros()

為什麼我用Python進行pandas數據分佈時會報錯?

問題原因:import scapy後執行腳本調用scapy模塊中(默認自動加了.py後綴)優先找了當前目錄的man.py,因為兩文件不一樣(一個是我們引入別人寫好的庫文件,一個是我們自己創建的文件),所以就報錯了。

一、如果一個錯誤出現後沒有被捕獲(捕獲是什麼先不管,現在就理解為出現了一個錯誤),它就一直被往上拋,最終將被Python解釋器捕獲。然後就在本該輸出結果的地方打印一大串錯誤信息,然後程序退出。示例代碼如下:

二、示例代碼執行後結果如下:

三、解讀錯誤信息就可以定位錯誤:

四、更換python版本3.6.1,pandas版本依然為0.20.2,不過python版本不一樣代碼略有不同。

1、去Chrome網頁鏈接,下載解壓後,將chromedriver.exe 放到Python的安裝目錄即可。

五、修改mv scapy.py abc.py問題解決。

1、轉換cmd命令:chcp 65001,也就是將cmd轉化為utf-8。

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

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

相關推薦

  • Python周杰倫代碼用法介紹

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

    編程 2025-04-29
  • 如何查看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計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

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

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

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

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

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

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

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

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

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

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

    編程 2025-04-29

發表回復

登錄後才能評論