python當中df的用法,python里的df定義

本文目錄一覽:

python基礎中,df後面是什麼

python基礎中,df後面是傳函數參數。是要在小括弧裡面傳函數參數,後面的[]是因為函數返回一個數組,列表所以用[0]取得索引為0處的值。

python基礎內容簡介

本書是大氣海洋學科方向學者的python入門書。全書側重於介紹大氣海洋學科領域python編程常用的基礎知識,包括即也阻的獲取、安裝、環境編輯器等內容,示例介紹了python語言基礎,流程式控制制,列表、元組、字典與集合,函數,類和對象,模塊,存儲戶等基礎知識。

結合python基礎知識,介紹了異常處理、計算生態、正則表達式、python腳本、日誌等內容。文後結合習題幫助讀者解決常見編程問題和困惑,從而幫助讀者實現時也on知識的靈活使用和綜舍編程,將python用於大氣海洋工程當中。

本書第1~8章為Python語言基礎,主要介紹Python的基本用法;第9章為一個實戰,幫助讀者理解前8章的知識,第10~17章為Python的進階使用,包含面向對象編程、函數式編程入門、文件讀寫、異常處理、模塊和包幾個部分。

第18章為第2個實戰,幫助讀者融會貫通前17章的知識,同時拋磚引玉,引起讀者探索的興趣。

5. 來點實用的:df = data frame

在第3章,講到了矩陣matrix和向量vector,矩陣和向量都只能包含某一種數據類型,而在實際應用中,這種情況比較少見。

當我們做一項數據調查時,調查報告通常不可能只含有數值型數據或者字元型數據,而是包含各種數據類型(做分析時需要對目錄數據進行編碼,這部分內容會在python分析基礎中講到)。因此,我們需要一種新的容器類型——data frame。

有人把data frame翻譯為數據幀,這種譯法是不準確的,尤其是考慮到「幀」的定義和data frame的含義的差別。也有人完全按照字面意思把它翻譯成數據框架,我感覺有些畫蛇添足,把原本不難理解的東西複雜化。

本章主要講了:

其實很簡單,用一個例子就能解釋明白:中學時老師統計的期末成績單就是一個df,通常一個Excel表格中包含以下內容:

在實際操作中,我們通常讀取一個Excel表單或者一個csv文件,並將這個文件賦值給一個變數(df或者data),後期對文件的操作可以通過變數名來進行。需要注意的是,df的每一行表示不同的觀測對象,每一列表示一個定語或變數。在成績單里,每個學生都是一個被觀測的個體,而各科成績表示不同的定語(Attribute),定語是用來描述觀測對象的特徵的。

下面我將採用R語言內置的數據集mtcars(motor trend car road tests)來做演示。

首先打開RStudio,用 data() 函數載入數據集:

通過前五行數據,我們可以看到,每行表示不同的汽車型號,列表示每個汽車型號的不同特徵,例如排量,馬力,氣缸數等等。

通常在獲取一個數據集後,我們需要了解它的結構,例如一共有幾行,有哪些列,列的名字,每列的數據類型等。查看df的結構,需要 str() 函數。

輸出結果表示,mtcars一共有32行(observations),和11列(variables)。

$符號後面是列名,一共11個,且mtcars中所有的數據類型都是numerical。

前面使用了內置數據集,接下來可以使用 data.frame() 自己創建一個,括弧中填入不同的向量,這些向量必須包含相同的元素數量。

* 注意區分R和python在創建df時的不同語法

我們以太陽系內八大行星為例,建立一個df,包含行星的名字,類型(岩質行星還是氣態巨行星),相對地球直徑的比值,相對地球公轉周期的比值以及是否含有星環(不止土星有星環)。

觀察一下我們創建的df,不難發現每個向量就是df中的每一列。(在python中有類似的用法,即通過字典dictionary創建df,參見python教程。)

跟矩陣和向量類似,我們可以選擇df的特定行和 / 或列。利用中括弧,在逗號的左邊填入想選擇的行,右邊填入列。這個用法跟前面矩陣的元素選擇重複,這裡就省略了。

這裡介紹另外一種方法,只用列名選擇某個特定的列:

df$colname

輸出的結果是一個向量,可以用 class() 函數驗證向量元素的類型。

更進一步,如果我們想選出有星環的行星,可以通過以下操作:

可以看出,我們篩選出了 rings 列中,值為 TRUE 的所有行。

那麼能否篩選不帶星環的行星?

方法很簡單,只需要在中括弧中加入一個 !

* 注意:由邏輯值組成的列通常被用來篩選符合某些條件的行,若沒有由邏輯值組成的列,我們可以通過邏輯運算符自己建立一個篩選標準

現在我們嘗試找出影響行星是否有星環的因素。

對比這兩個結果,可以發現太陽系中的岩態行星都沒有星環,而氣態巨行星都有星環。因此我們可以猜測,影響一個行星是否有星環的因素是行星的類型。當然這只是一個假設,要想驗證這個假設在銀河系甚至可觀測宇宙是否成立,我們需要更多數據來進行 假設檢驗 ,這部分的內容需要懂點統計學,後面會講到。

上一步實際上是給我們的數據集創建了一個子集,用來過濾掉一部分不需要i的數據。現在介紹一種更高效、更普適的方式:

藉助第二個arg,我們可以根據「某些條件」來選擇。這裡的條件覆蓋較廣的範圍,不再局限於邏輯值。

* 注意:這裡的『單等於號』表示賦值,『雙等於號』表示邏輯判斷

現在試試用numerical數據作為篩選條件,選出直徑比地球直徑大的行星:

排序要用到 order() 函數:

* 注意:decreasing默認為假,也就是說如果不填這個arg, order() 函數會進行升序排列

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()

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

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

相關推薦

  • Python列表中負數的個數

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

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    編程 2025-04-29

發表回復

登錄後才能評論