DataFrame(1):DataFrame結構的詳細介紹


1、DataFrame數據結構的解釋說明

在這里插入圖片描述
  index表示的是行索引,column表示的是列索引,values表示的是數值,其實不管是行索引,還是列索引都可以看作是索引Index。從每一行看,DataFrame可以看作是一行行的Series序列上下堆積起來的,每個Series的索引就是列索引[0,1,2,3];從每一列看,DataFrame可以看作是一列列的Series序列左右堆積起來的,每個Series的索引就是行索引[0,1,2]。
  DataFrame的默認理解方式是:DataFrame其實就是由很多個數據類型不一樣的列Series組成。對於上圖,此DataFrame其實就是由如下四個Series組成,它們的索引都是行索引[0,1,2]。
在這里插入圖片描述
  可以把一個DataFrame,類比成MySQL中的一張表:
  MySQL表中,每個列字段的數據類型基本都不一樣,每張表都有很多個列字段;
  如果把MySQL表中的每個列看做是一個數據類型的Series,一張MySQL表就可以看做是由很多個數據類型不一樣的Series組成,和我們上面講述的一致。

2、DataFrame的index屬性和columns屬性

1)構造一個DataFrame
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

結果如下:

在這里插入圖片描述

2)index和columns屬性
df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

x = df.index
display(x)
list(df.index)

y = df.columns
display(y)
list(df.columns)

結果如下:
在這里插入圖片描述

① 修改行索引:df.index
df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

df.index = ["a","b","c"]
display(df)

結果如下:

在這里插入圖片描述

② 修改列索引:df.columns
df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

df.columns = ["a","b","c"]
display(df)

結果如下:
在這里插入圖片描述

3)DataFrame的索引對象Index

  觀察“DataFrame的數據結構圖”可以發現:每個df既有一個行索引index,又有一個列索引columns。但是不管行索引index,還是列索引columns,統一都都叫做 “Index對象”。不同的是在創建df,指定參數的參數名稱的時候,為了方便區分行索引和列索引 ,把行索引這個“Index對象”叫做index,把列索引這個“Index對象”叫做columns 。
  記住:Index索引對象中的元素不支持修改。

# pd.Index()用於創建一個Index對象
x = pd.Index([1,2,3])
display(x)
display(type(x))

x[0] = 1

結果如下:
在這里插入圖片描述

3、name屬性

1)怎么理解DataFrame的name屬性

在這里插入圖片描述
  我們知道:取出DataFrame中的每一行、每一列都是一個Series,組成這個DataFrame對象的每個sereis都有一個名稱,這個名稱,就是對應的那一行、列的索引。如圖所示 ,上述有“紅橙黃綠藍靛紫黑”八種顏色,分別編號為1-8,每個號對應的都是一個Series。Series1的name為“地區1”,Series2的name為“地區2”…Series8的name為“廣州”。
  接下來,我們使用代碼檢驗一下。

df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

df.loc["地區1"].name
df.loc["地區2"].name
......
df["廣州"].name

結果如下:
在這里插入圖片描述

2)為行索引、列索引設置name名稱屬性:df.index.name和df.columns.name
df = pd.DataFrame(np.random.randint(70,100,(3,5)), 
                  index=["地區1", "地區2", "地區3"], 
                  columns=["北京","天津", "上海","沈陽", "廣州"])
display(df)

df.index.name = "index_name"
df.columns.name = "columns_name"
display(df)

結果如下:

在這里插入圖片描述
綜上所述:通過上面的演示,我們不僅DataFrame的每一行、每一列有一個name名稱,並且我們還可以給DataFrame的行索引和列索引分別設置一個name名稱。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM