DataFrame(4):DataFrame元素的獲取方式


1、學習DataFrame元素獲取,需要掌握以下幾個需求

  • 訪問一列 或 多列
  • 訪問一行 或 多行
  • 訪問某個值
  • 訪問某幾行中的某幾列
  • 訪問某幾列中的某幾行

2、構造一個DataFrame

df = pd.DataFrame(np.random.randint(70,100,(4,5)), 
                  index=["地區1", "地區2", "地區3","地區4"], 
                  columns=["武漢","天門", "黃岡","孝感","廣水"])
display(df)

結果如下:
                

注意:不管是單獨獲取到一行、還是一列,得到的都是一個Series。不管是單獨獲取到多行、還是多列,得到的都是一個DataFrame。

# 獲取一列
x = df["廣水"]
display(x)
display(type(x))

# 獲取一行
y = df.loc["地區1"]
display(y)
display(type(y))

結果如下:
                

3、訪問一列或多列:傳入單個標簽或標簽數組

df = pd.DataFrame(np.random.randint(70,100,(4,5)), 
                  index=["地區1", "地區2", "地區3","地區4"], 
                  columns=["武漢","天門", "黃岡","孝感","廣水"])
display(df)

# 訪問一列
x = df["武漢"]
display(x)

# 訪問多列
y = df[["武漢","天門"]]
display(y)

結果如下:
                

4、訪問一行或者多行:loc中傳入標簽索引、iloc中傳入位置索引、切片方式、布爾數組方式

① loc標簽索引

df = pd.DataFrame(np.random.randint(70,100,(4,5)), 
                  index=["地區1", "地區2", "地區3","地區4"], 
                  columns=["武漢","天門", "黃岡","孝感","廣水"])
display(df)

x1 = df.loc["地區1"]
display(x1)

x2 = df.loc[["地區1","地區2"]]
display(x2)

結果如下:
                

特別說明:“訪問行”唯獨不能使用類似df[0],df[[0,1]],df["地區1"],df[["地區1","地區2"]]這樣的方式。

② iloc位置索引

df = pd.DataFrame(np.random.randint(70,100,(4,5)), 
                  index=["地區1", "地區2", "地區3","地區4"], 
                  columns=["武漢","天門", "黃岡","孝感","廣水"])
display(df)

x3 = df.iloc[0]
display(x3)

x4 = df.iloc[[0,3]]
display(x4)

結果如下:
                

③ 切片方式:這種方式容易忽略,也容易弄錯

df[0:2]
df[1:]

結果如下:
                

④ 布爾數組方式

df = pd.DataFrame(np.random.randint(70,100,(4,5)), 
                  index=["地區1", "地區2", "地區3","地區4"], 
                  columns=["武漢","天門", "黃岡","孝感","廣水"])
display(df)

y = df[df["武漢"] >= 80]
display(y)

結果如下:
                

5、訪問某個值

如果說要訪問下面數據框DataFrame中的95,應該怎么做呢?

① 先訪問“地區3”這一行,再訪問95這個數據

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

df.loc["地區3"]
df.loc["地區3"].loc["黃岡"]
結果如下:
                

② 先訪問“黃岡”這一列,再訪問95這個數據

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

df["黃岡"]
df["黃岡"].loc["地區3"]

結果如下:
                

③ 向loc中傳入數據的標簽坐標、向iloc中傳入數據的位置坐標(最常用)

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

df.loc["地區3","黃岡"]
df.iloc[2,2]

結果如下:
                

 

④ 向at中傳入數據的標簽坐標、向iat中傳入數據的位置坐標

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

df.at["地區3","黃岡"]
df.iat[2,2]

結果如下:
                

6、訪問某幾行中的某幾列

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

# 先獲取行,再獲取列
df.loc[["地區1","地區3"]][["武漢","廣水"]]

結果如下:
                

7、訪問某幾列中的某幾行

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

# 先獲取列,再獲取行
df[["武漢","廣水"]].loc[["地區1","地區3"]]

結果如下:
                

8、獲取多行多列常用的一種方式:iloc+切片、loc+標簽數組

① 獲取多行多列:iloc+切片

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

x = df.iloc[:3,:]
display(x)

結果如下:
                

② 獲取多行多列:loc+標簽數組

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

x = df.loc[["地區1","地區3"],['武漢','天門','黃岡','孝感','廣水']]
display(x)

結果如下:
                

9、獲取多行多列常用的第二種方式:iloc+切片+位置數組、loc+切片+標簽數組

① 獲取多行多列:iloc+切片+位置數組

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

x = df.iloc[1:,[1,4]]
display(x)

y = df.iloc[[1,3],1:]
display(y)

結果如下:
                

② 獲取多行多列:loc+切片+標簽數組

df = pd.DataFrame({"武漢":[78,99,81,77],
                   "天門":[74,97,96,97],
                   "黃岡":[77,80,95,84],
                   "孝感":[92,84,75,80],
                   "廣水":[85,85,72,74]}, 
                  index=["地區1", "地區2", "地區3","地區4"]
)
display(df)

x = df.loc["地區1":,["武漢","廣水"]]
display(x)

y = df.loc[["地區1","地區3"],"天門":]
display(y)

結果如下:
                

 


免責聲明!

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



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