本文目錄一覽:
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-hant/n/199560.html