Pandas常用數據結構DataFrame詳細教程

2021-12-23 開心數據

pandas 是python的數據分析庫,提供快速、靈活和富有表現力的數據結構,用於數據挖掘和數據分析,同時也提供數據清洗功能,與numpy、matplotlib並稱,成為數據分析必學的三個庫。Pandas的主要功能如下。

 

   此外,其更廣泛的目標是成為任何語言中可用的最強大,最靈活的開源數據分析工具。其中最常用的數據結構是DataFrame,本文將詳細介紹DataFrame的用法。 

 

 

   Dataframe是pandas中的數據結構,也是帶標籤的、大小可變的,二維異構表格。

  它類似於電子表格,可以在列中存儲不同類型的數據(包括字符,整數,浮點值,分類數據等),Dataframe中的數據以一個或多個二維塊存放,不是列表、字典或一維數組結構。

一、創建

 

由數組/list組成的字典創建Dataframe,columns為字典key,index為默認數字標籤,字典的值的長度必須保持一致

 

 

通過二維數組直接創建Dataframe,得到一樣形狀的結果數據,如果不指定index和columns,兩者均返回默認數字格式

index和colunms指定長度與原數組保持一致

 

由字典組成的列表創建Dataframe,可以允許長度不一致,columns為字典的key,index不做指定則為默認數組標籤

colunms和index參數分別重新指定相應列及行標籤

 

 

二、DataFrame索引

   

df[]默認選擇列,[]中寫列名,選擇單列為Series,print結果為Series格式,多選列為Dataframe,print結果為Dataframe格式

一般用於選擇列,也可以選擇行

注意:反向截取是-1結束,不是0,末端不包含

2、df.loc[] - 按index選擇行

3、df.iloc[] - 按照整數位置(從軸的0到length-1)選擇行

類似list的索引,其順序就是dataframe的整數位置,從0開始計

4、切片索引

5、布爾索引

  多行做判斷,索引結果保留所有數據:True返回原數據,False返回值為NaN

 

6、多重索引

三、DataFrame基本技巧

 

1、數據查看、轉置

  要在dataframe最後新增列,直接在後面加一個[],在具體位置新增列用df.insert(index, obj)方法;新增行直接用loc。

 

4、DataFrame對象之間的數據自動按照列和索引(行標籤)對齊

 

 排序包括按值排序和按索引排序,按值排序 .sort_values,ascending參數:設置升序降序,默認升序

 

按索引排序 .sort_index

  

1、數值計算

Dataframe可以用來進行常用的數學的計算,例如:

 

 

 

1、數據清洗

Dataframe的數據清洗包含重複值、缺失值、異常值等等的清洗

subset對應的值是列名,表示只考慮這兩列,將這兩列對應值相同的行進行去重。默認值為subset=None表示考慮所有列。keep='first'表示保留第一次出現的重複行,是默認值。keep另外兩個取值為"last"和False,分別表示保留最後一次出現的重複行和去除所有重複行。

 

缺失值清洗最簡單的方法就是刪除或不管,插補的方法有單一值填充、拉格朗日插值法、多重插補法以及各種機器學習插補法等等,缺失值和異常值清洗方法具體可見python數據預處理之異常值、缺失值處理方法

 

數據合併包括四種方法,merge、join、concat和append

l pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,

         left_index=False, right_index=False, sort=True,

         suffixes=('_x', '_y'), copy=True, indicator=False)

類似於sql中的join,僅支持橫向拼接,其中on關鍵字為拼接參考鍵,how為拼接方式,有inner,left,right,outer4種連結方式。 

l df1.join(df2)   直接通過索引連結

l pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,

          keys=None, levels=None, names=None, verify_integrity=False,

          copy=True)

可以進行橫向和縱向連接,默認axis=0,行+行,但要求非拼接軸標籤唯一,例如axis=0時,要求每個dataframe內部的列名是唯一的,只有相同列名才有拼接的意義。

l append,類似於列表的append方法,一般用來增加行

 

數據轉換一般用map和apply,map主要用於Series的轉換,apply是series和dataframe都可以。

Dataframe運用apply可以將各行和各列的函數運用到一維數組上,默認情況下會以列為單位,分別對列應用函數。如果想要將函數應用到每一個元素,需要用到applymap

  

1、統計基礎

Dataframe也擁有基本的統計功能,具體如下:

 

    Dataframe在行(axis=0)或列(axis=1)上進行分組,將一個函數應用到各個分組並產生一個新值,然後函數執行結果被合併到最終的結果對象中。

l groupby  類似sql的group by功能,直接分組得到一個groupby對象,是一個中間數據,沒有進行計算,所以一定要加上集合函數,複雜的聚合函數可借用agg,功能更強大。

df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

 

常用的聚合函數如下:

 

l 數據透視表pivot_table

   類似於excel中的數據透視功能,可以通過一個或多個鍵分組聚合DataFrame中的數據,通過aggfunc參數決定聚合類型,是groupby的高級功能。

l 交叉表crosstab

默認情況下,crosstab是用來計算因子的頻率表,透視表是一種進行分組統計的函數,而交叉表是特殊的透視表,當只統計分組頻率時更方便。

 

數據透視表和交叉表的具體用法,可見pd.pivot_table數據透視表與pd.crosstab交叉表

 

Dataframe的常見用法就是這些,當然還可以通過plot來調用matplotlib進行數據可視化,不過主要還是要依賴matplotlib。

相關焦點

  • Python-Pandas安裝--Series結構和DataFrame結構
    使用pandas庫相比NumPy庫有什麼好處,pandas庫比NumPy庫封裝了哪些特性 1. pandas會自動講數據按照自定義的方式進行對齊顯示,避免數據沒有對齊造成處理數據的時候出現失誤 2. pandas可以很靈活的處理缺失的數據,如果某個數據缺失,可以基於大部分數據的平均值進行填充,還可以填充想要的數值
  • Pandas數據結構:DataFrame
    剛剛接觸pandas的朋友,想了解數據結構,就一定要認識DataFrame,接下來給大家詳細介紹!, 18],"city": ["BeiJing", "TianJin", "ShenZhen"]}print(data)print("")frame = pd.DataFrame(data) # 創建DataFrame
  • 數據分析進階:Pandas.DataFrame
    Series是一維數據結構類型,DataFrame則是二維數據結構類型,比如Pandas開篇時候的例子,由行(rows)列(columns)信息構成。Series因為只能接受一維數據,所以實際只能有1列。來看下pandas.DataFrame的用法。
  • 什麼是Pandas的DataFrame?
    什麼是DataFrameDataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。DataFrame既有行索引也有列索引,它可以被看做由series組成的字典(共用同一個索引)2.
  • python:數據結構之dataframe
    Dataframe1、什麼是dataframe對象DataFrame是pandas庫中最常用的數據類型,是一種存放數據的容器,dataframe
  • 數據集的「乾坤大挪移」:如何使pandas.Dataframe從行式到列式?
    圖源:unsplash如何將數據集從行式變為列式?有很多種方法可以做到這一點,但pandas的melt()方法是其中最靈活的一種,你只需要學好這種就足夠了。本文將傳授給你數據集的「乾坤大挪移」大法,使用pd.melt()或melt方法使pandas. dataframe發生形變。一起來看看吧!行式vs寬式數據集如果我們將一個行式數據集與列式數據集進行比較,最容易理解行式數據集是什麼樣?
  • Python基礎 | pandas.dataframe 專題使用指南
    8.如何返回一個dataframe的單列或單行如上,此時返回的是一個series,而不是dataframe。這個方法有個常用情景,即按條件修改數據:3.簡便地獲得聚寬數據中的時間索引有時建立一個dataframe時,為了和平臺數據保持一致,需要使用相同的時間行索引
  • Python數據分析 | 第五章 Pandas入門之Series和DataFrame
    5.1 pandas的數據結構介紹要使用pandas,你首先就得熟悉它的兩個主要數據結構:Series和DataFrame。雖然它們並不能解決所有問題,但它們為大多數應用提供了一種可靠的、易於使用的基礎。
  • Pandas常用的兩種數據類型之「DataFrame」
    因為通常使用二維數據,因此,我們可以將DataFrame理解成類似excel的表格型數據,由多列組成,每個列的類型可以不同。因為DataFrame是多維數據類型,因此,DataFrame既有行索引,也有列索引。
  • 數據分析利器 pandas 系列教程(二):強大的 DataFrame
    在上一篇文章 數據分析利器 pandas 系列教程(一):從 Series 說起  中:詳細介紹了 pandas 基礎數據結構 Series,今天說說另一種數據結構 DataFrame。dataframe 是表格型的數據結構,由一組有序的列組成,可以看成是由 Series 組成的字典,舉個例子:/namesexcoursegrade0Bobmalemath991Alicefemaleenglish922Joemalechinese893Bobmalechinese884Alicefemalechinese955Joemaleenglish936Bobmaleenglish957Alicefemalemath798Joemalemath89
  • python數據分析專題 (12):DataFrame
    DataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。
  • array, list, tensor,Dataframe,Series之間互相轉換總結
    ,這次想把這些常用的轉換做一個總結,方便以後看。這些主要包括:Dataframe、Series(pandas), array(numpy), list, tensor(torch)二、定義2.1 Dataframe和Series這裡簡單介紹一下這兩個結構。
  • pandas:Series , Data Frame , Panel
    Data FrameData Frame是一個帶有行和列的二維標記數據結構。它是最常用的pandas對象之一,可接受不同類型的輸入,如Dict of 1D ndarray、list、Dict或Series;2-D numpy.ndarray;有組織的或有記錄的序列。
  • paipai教你pandas(1) DataFrame的列維度操作
    paipai教你pandas教程系列的第1篇文章,DataFrame是表格型的數據類型,有列和行兩個維度,本篇教程講解pandas
  • Pandas-DataFrame基礎知識點總結
    1、DataFrame的創建DataFrame是一種表格型數據結構,它含有一組有序的列,每列可以是不同的值。
  • 【串講總結】array, list, tensor,Dataframe,Series之間互相轉換總結
    這些主要包括:Dataframe、Series(pandas), array(numpy), list, tensor(torch)二、定義2.1 Dataframe和Series這裡簡單介紹一下這兩個結構。
  • 【深度學習】array, list, tensor,Dataframe,Series之間互相轉換總結
    ,這次想把這些常用的轉換做一個總結,方便以後看。這些主要包括:Dataframe、Series(pandas), array(numpy), list, tensor(torch)二、定義2.1 Dataframe和Series這裡簡單介紹一下這兩個結構。
  • Pandas系列 - DataFrame操作
    列刪除 pop/del行選擇,添加和刪除行切片數據幀(DataFrame)是二維數據結構,即數據以行和列的表格方式排列數據幀(DataFrame)的功能特點:pandas.DataFrame構造函數:pandas.DataFrame(data, index, columns, dtype, copy)編號參數描述1data數據採取各種形式,如:ndarray,series,map,lists,dict,constant和另一個DataFrame。
  • Pandas數據結構之DataFrame
    DataFrame 是由多種類型的列構成的二維標籤數據結構,類似於 Excel 、SQL 表,或 Series 對象構成的字典。DataFrame 是最常用的 Pandas 對象,與 Series 一樣,DataFrame 支持多種類型的輸入數據:除了數據,還可以有選擇地傳遞 index(行標籤)和 columns(列標籤)參數。傳遞了索引或列,就可以確保生成的 DataFrame 裡包含索引或列。
  • 數據分析工具之pandas