TShopping

 找回密碼
 註冊
搜索
查看: 257|回復: 0

[教學] Pandas中loc和iloc函數用法詳解(源碼+實例)

[複製鏈接]
發表於 2021-7-14 23:42:36 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
loc函數:通過行索引"Index"中的具體值來取行數據(如取"Index"為"A"的行)

iloc函數:通過行號來取行數據(如取第二行的數據)

本文給出loc、iloc常見的五種用法,並附上詳細代碼。


1. 利用loc、iloc提取行數據
  1. import numpy as np
  2. import pandas as pd
  3. #创建一个Dataframe
  4. data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))

  5. In[1]: data
  6. Out[1]:
  7.     A   B   C   D
  8. a   0   1   2   3
  9. b   4   5   6   7
  10. c   8   9  10  11
  11. d  12  13  14  15

  12. #取索引为'a'的行
  13. In[2]: data.loc['a']
  14. Out[2]:
  15. A    0
  16. B    1
  17. C    2
  18. D    3

  19. #取第一行数据,索引为'a'的行就是第一行,所以结果相同
  20. In[3]: data.iloc[0]
  21. Out[3]:
  22. A    0
  23. B    1
  24. C    2
  25. D    3
複製代碼

2. 利用loc、iloc提取列數據
  1. In[4]:data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
  2. Out[4]:
  3.     A
  4. a   0
  5. b   4
  6. c   8
  7. d  12

  8. In[5]:data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
  9. Out[5]:
  10.     A
  11. a   0
  12. b   4
  13. c   8
  14. d  12
複製代碼


3.利用loc、iloc提取指定行、指定列數據

  1. In[6]:data.loc[['a','b'],['A','B']] #提取index为'a','b',列名为'A','B'中的数据
  2. Out[6]:
  3.    A  B
  4. a  0  1
  5. b  4  5

  6. In[7]:data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
  7. Out[7]:
  8.    A  B
  9. a  0  1
  10. b  4  5
複製代碼


4.利用loc、iloc提取所有數據
  1. In[8]:data.loc[:,:] #取A,B,C,D列的所有行
  2. Out[8]:
  3.     A   B   C   D
  4. a   0   1   2   3
  5. b   4   5   6   7
  6. c   8   9  10  11
  7. d  12  13  14  15

  8. In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
  9. Out[9]:
  10.     A   B   C   D
  11. a   0   1   2   3
  12. b   4   5   6   7
  13. c   8   9  10  11
  14. d  12  13  14  15
複製代碼

5.利用loc函數,根據某個數據來提取數據所在的行
  1. In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
  2. Out[10]:
  3.    A  B  C  D
  4. a  0  1  2  3

  5. In[11]: data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)
  6. Out[11]:
  7.    A  B  C  D
  8. a  0  1  2  3
複製代碼

同時,以下幾種寫法也可提取數據所在的行,與第五種用法類似,僅作補充。

  1. In[12]: data[data['A']==0] #dataframe用法
  2. In[13]: data[data['A'].isin([0])] #isin函数
  3. In[14]: data[(data['A']==0)&(data['B']==2)] #dataframe用法
  4. In[15]: data[(data['A'].isin([0]))&(data['B'].isin([2]))] #isin函数

  5. Out[15]:
  6.    A  B  C  D
  7. a  0  1  2  3
複製代碼

利用loc函數的時候,當index相同時,會將相同的Index全部提取出來,優點是:如果index是人名,數據框為所有人的數據,那麼我可以將某個人的多條數據提取出來分析;缺點是:如果index不具有特定意義,而且重複,那麼提取的數據需要進一步處理,可用.reset_index()函數重置index



 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2021-11-29 11:13 , Processed in 5.111186 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表