亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Pandas 數據結構 DataFrame

1. 前言

上一節我們講述了 Pandas 兩種數據結構之一 Series,并介紹了該數據結構的特點、常用屬性及方法。Series 數據結構能有效的描述我們實際應用中的一維數據,然而,我們實際生活中接觸較多的是有行和列的二維數據,那 Pandas 庫中的二維數據結構又是怎樣表示的呢?

Pandas 庫中的 DataFrame 是一個二維數據結構,可以想象成我們常用的 Excel,它是Pandas 應用中最常用的數據結構。

2. DataFrame 數據結構概述

DataFrame 是一種表格型的數據結構,含有一組有序的列,每列可以存放任意類型的數據,可以看做是由Series組成的字典(公用同一個索引),它有行索引和列索引,行索引在左側,列索引在上方,并可以通過操作指定行索引和列索引的值。

圖片描述

3. DataFrame 數據結構常用的屬性

3.1 DataFrame 常用的屬性

常用屬性 屬性描述
values 返回 ndarray 類型的對象
index 獲取 DataFrame 行索引對象(可以通過 index.values 獲取行索引值)
columns 獲取 DataFrame 列索引對象(可以通過 index.values 獲取列索引值)
axes 獲取行及列索引
ndim 獲取 Series 的數據維度( Series 是一維數組)
shape 獲取 DataFrame 數據結構
size 獲取 Series 的數據類型

DataFrame 數據結構的屬性和 Series 的部分屬性內容是相同的,但因為是二維數據結構,也有自己獨特的一些屬性,下面我們通過代碼逐一介紹。

實例:我們通過定義一個 DataFrame 數據結構,然后分別演示上面的屬性操作。

# 引入pandas
import pandas as pd
# 定義一個dataframe數據結構的對象
data={'bookname':['python入門','python編程','python實戰'],
          'author':['Eric','張健','劉輝'],
          'price':['49.9','36.5','67.4']}
frame_obj=pd.DataFrame(data)
print(frame_obj)

# --- 輸出結果 ---
   bookname author price
0  python入門   Eric  49.9
1  python編程     張健  36.5
2  python實戰     劉輝  67.4

具體的屬性操作:

# values 屬性
print(frame_obj.values)
#--- 輸出結果 ---
[['python入門' 'Eric' '49.9']
 ['python編程' '張健' '36.5']
 ['python實戰' '劉輝' '67.4']]    # 一個ndarray類型的對象

# index 屬性
print(frame_obj.index.values)
#--- 輸出結果 ---
[0 1 2]  # 這是一個一維數組 是dataframe數據對象的行索引值

# columns 屬性
print(frame_obj.columns.values)
#--- 輸出結果 ---
['bookname' 'author' 'price'] # 這是一個一維數組 是dataframe數據對象的列索引值

# axes 屬性
print(frame_obj.axes)
#--- 輸出結果 ---
[RangeIndex(start=0, stop=3, step=1), Index(['bookname', 'author', 'price'], dtype='object')]   # 對應的行索引和列索引

# ndim 屬性
print(frame_obj.ndim)
#--- 輸出結果 ---
2  # 2正式dataframe的數據維度

# shape 屬性
print(frame_obj.shape)
#--- 輸出結果 ---
(3, 3)  # 該dataframe數據結構是3行3列的

# size 屬性
print(frame_obj.size)
#--- 輸出結果 ---
9 # 數據的個數,二維3乘以3是9個數據

3.2 DataFrame 常用的操作方法

接下來我們一起看下dataframe的常用方法,見證這個二維數據的厲害吧。

常用函數 函數描述
DataFrame() 創建一個DataFrame數據結構的對象
head() 用于查看數據集的前n行
info() 快速查看數據的描述
tail() 用于查看數據集的后n行
T 轉置函數
sum() 求和函數

下面我們分別看一下每個方法的具體操作實例:

DataFrame() 方法

該方法用于創建 DataFrame 對象,我們可以指定行索引和列索引創建,還可以通過字典進行創建。下面代碼中分部創建一個4*4的 DataFrame。

# 1.通過傳入數據,行索引,列索引進行創建
df1=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],
                 index=list('ABCD'),columns=list('ABCD'))
print(df1)
# --- 輸出結果 ---
    A   B   C   D
A   1   2   3   4
B   5   6   7   8
C   9  10  11  12
D  13  14  15  16
# 第一個參數是存放在DataFrame里的數據,第二個index是行名索引,第三個columns是列索引,注意:這里index,columns的list長度要和對應的行和列索引數量一致,不然會報錯。

# 1.通過字典進行創建
data={'A':['1','2','3','4'],
          'B':['5','6','7','8'],
          'C':['9','10','10','11'],
          'D':['12','13','14','15']}
df2=pd.DataFrame(data)
print(df2)
# --- 輸出結果 ---
   A  B   C   D
0  1  5   9  12
1  2  6  10  13
2  3  7  10  14
3  4  8  11  15

head() 方法

該方法通過傳入的值,查找數據的的前n行

# 2.head(2) 取前兩行數據
data={'A':['1','2','3','4'],
          'B':['5','6','7','8'],
          'C':['9','10','10','11'],
          'D':['12','13','14','15']}
df2=pd.DataFrame(data)
print(df2.head(2))

# --- 輸出結果 ---
   A  B   C   D
0  1  5   9  12
1  2  6  10  13
# 這里我們輸出了前兩行的數據

info() 方法

通過該方法,可以看到數據的描述信息摘要,在對數據進行探索性分析時比較有用,比如行和列數,每個值的類型,以及非空值的數量。

# 3.info() 取前兩行數據
data={'A':['1','2','3','4'],
          'B':['5','6','7','8'],
          'C':['9','10','10','11'],
          'D':['12','13','14','15']}
df2=pd.DataFrame(data)
print(df2.info())

# --- 輸出結果 ---
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   A       4 non-null      object
 1   B       4 non-null      object
 2   C       4 non-null      object
 3   D       4 non-null      object
dtypes: object(4)
memory usage: 256.0+ bytes
None

tail() 方法

通過傳入的值,返回 DataFrame 對象的后幾行數據

# 4.tail(2) 取后兩行數據
data={'A':['1','2','3','4'],
          'B':['5','6','7','8'],
          'C':['9','10','10','11'],
          'D':['12','13','14','15']}
df2=pd.DataFrame(data)
print(df2.tail(2))

# --- 輸出結果 ---
   A  B   C   D
2  3  7  10  14
3  4  8  11  15
# 這里輸出的是后兩行數據

T 方法

直接字母 T,可以將 DataFrame 的行和列進行置換。

# 5.T 進行置換行和列
data={'A':['1','2','3','4'],
          'B':['5','6','7','8'],
          'C':['9','10','10','11'],
          'D':['12','13','14','15']}
df2=pd.DataFrame(data)
print(df2)
# --- 輸出結果 ---
 A  B   C   D
0  1  5   9  12
1  2  6  10  13
2  3  7  10  14
3  4  8  11  15   # 原dataframe

print(df2.T)
# --- 輸出結果 ---
 0   1   2   3
A   1   2   3   4
B   5   6   7   8
C   9  10  10  11
D  12  13  14  15  #  進行置換后,行和列位置變換

sum() 方法

sum() 是求和方法,默認是對每列求和,傳入 1 也就是 sum(1) ,是對每行進行求和。

# 1.sum()對每列求和,sum(1)對每行進行求和
data={'A':[1,2,3,4],
          'B':[5,6,7,8],
          'C':[9,10,11,12],
          'D':[13,14,15,16]}
df2=pd.DataFrame(data)
print(df2)
# --- 輸出結果 ---
   A  B   C   D
0  1  5   9  13
1  2  6  10  14
2  3  7  11  15
3  4  8  12  16  # 原dataframe數據

print(df2.sum())
# --- 輸出結果 ---
A    10
B    26
C    42
D    58 
dtype: int64   # 對每列進行求和

print(df2.sum(1))
# --- 輸出結果 ---
0    28
1    32
2    36
3    40
dtype: int64  # 對每行進行求和

4. 小結

該小節內容講述了 Pandas 庫中的第二個重要數據結構 DataFrame ,它作為二維數據結構,擁有 Series 之外的獨特屬性和方法內容。本節課程的重點如下:

  • DataFrame 數據結構的常用屬性;
  • DataFrame 數據結構的常用操作方法;

圖片描述

Tips:想要學習更多Pandas相關知識,可以點擊
Pandas Pandas讀取數據文件
Pandas 數據結構Series
Pandas 讀取MySql數據