今天給大家展示的是一份從2007到2020年的各個省份各個季度的離婚情況表,表結構如下(截取部分):
我們通過操作這張表,學習DataFrame的索引、切片和一些算術操作。我們知道DataFrame是一個二維的數據結構,我們學習過Series的索引和切片,只不過它是一個一維的。但是兩者在使用上還是很類似的。
#### 索引
DataFrame是否也有這些呢?我們通過**2007-2020全國結婚離婚數據.csv**這個數據表來去看一下。
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('2007-2020全國結婚離婚數據.csv')
# 因為在列名下面有一個空行我們刪除掉
data = data.dropna()
# 獲取2020年第一季度結婚數 (即某一列數據)
data['2020年第1季度結婚登記']
data數據如下所示:
# 獲取北京市2007-2020年的所有數據(即一行數據)
data[3] # 使用行標簽3是否可以呢?
```
此時有報錯:KeyError: 3,因此對于DataFrame來說,我們不能直接使用索引值訪問行。
所以我們分別從**行和列**兩個方面給大家介紹索引訪問,先來看一張表格
| | 顯式訪問 | 隱式訪問 |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| | 即使用index的值進行索引(如果在讀取csv,excel文件的時候沒有指明列名,則默認是數字1~n) | 使用整數作為索引值(從0開始,默認向后數) |
| 行 | df.loc[行的名字] **獲取單行** 如: df.loc[3] df.loc['北京市'] | df.iloc[row_index] **獲取單行** 如: df.iloc[2] |
| | df.loc[[行名1,行名2,行名3,....]] **獲取不連續多行** 如: df.loc[[3,4,5,6]] df.loc[['北京市','天津市','上海市']] | df.iloc[row_index_list] **獲取不連續多行 ** 如:df.iloc[[2,3,7,9]] |
| | df.loc[行名1:行名2] **獲取連續多行** 如:df.loc['北京市':'吉林省'] 但是行也可以按照如下形式獲?。?df['行名1':'行名2':'步長'] 指定步長獲取 | df.iloc[start:end] **獲取連續多行 ** 如:df.iloc[3:9] |
| 列 | df[列名] **單列訪問** 如:df['2020年第1季度結婚登記'] | df.iloc[:,col_loc] **單列訪問** 如:df.iloc[:,3] |
| | df[[列名1,列名2,....]] **不連續多列訪問** 如:df.[['2020年第1季度結婚登記','2020年第2季度結婚登記']] | df.iloc[:,col_loc_list] **不連續多列訪問** 如:df.iloc[:,[3,5,7]] |
| | | df.iloc[:,start:end:step] **連續多列訪問** 如:df.iloc[:,3:8] 如果獲取的指定某些行或者某些列可以按照如下方式: df.iloc[row_start:row_end:step,col_start:col_end:step] |
**顯式訪問**具體效果展示:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 將表格的第一列設置為行索引,添加index_col=0
data = pd.read_csv('2007-2020全國結婚離婚數據.csv',index_col=0)
data = data.dropna()
# 顯式獲取指定列
col1 = data['2007年第1季度結婚登記']
print(col1)
# 顯式獲取指定行
row1 = data.loc['上海市']
print(row1)
# 顯式獲取多個指定列
col_list = data[['2007年第1季度結婚登記','2007年第2季度結婚登記','2007年第3季度結婚登記']]
print(col_list)
# 顯式獲取多個指定行
row_list = data.loc[['北京市','上海市','天津市']]
print(row_list)
```
我們知道隱式索引,行和列都是使用默認的整數作為索引值(從0開始,默認向后數),即
對于數字我們是看不到的,所以我們稱為隱式。
列的訪問使用的是: iloc[行,列] 行或者列位置如果使用【:】則表示獲取所有的行或者所有的列。
**隱式訪問**具體效果展示:
```
# 單行的獲取
row1 = data.iloc[3]
print(row1)
# 多行獲取
row_list = data.iloc[[3,5,7,9]]
print(row_list)
# 單列獲取
col = data.iloc[:,3]
print(col)
# 多列獲取 (不連續的列)
col_list = data.iloc[:,[2,4,6]]
print(col_list)
```
數據比較多,這里就不給大家截圖展示了。
更多關于“Python 培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。
注:本文部分文字和圖片來源于網絡,如有侵權,請聯系刪除。版權歸原作者所有!