Python pandas 庫是數據處理中不可或缺的一個工具,它提供了豐富的數據分析和操作方法,可以輕鬆地對數據進行匯總、排序、過濾、分組、並列計算等操作。在實際的數據處理中,我們經常需要添加一列數據,以補充或修正已有數據的信息。本文將從不同的角度來探討 pandas 如何方便地添加新的一列數據。
一、dataframe 添加一列數據
在 pandas 中,DataFrame 是最為常用的數據類型,它類似於數據庫中的表格,每列為一種數據類型,每行為一個樣本。添加新的一列數據對 DataFrame 類型的數據進行擴充。
我們可以使用 Pandas 的 Series 對象來添加一列數據,以存儲某一列的數據信息。比如,在以下的示例中,我們創建了一個包含學生信息、成績和排名的表格,我們要添加一個名為“是否及格”的一列數據,以表示學生是否及格。
import pandas as pd
# 創建一個 DataFrame
data = {'姓名': [ '張三', '李四', '王五', '趙六' ],
'成績': [ 89, 76, 67, 92 ],
'排名': [ 1, 3, 4, 2 ]}
df = pd.DataFrame(data)
# 創建一個表示是否及格的 Series 對象
df['是否及格'] = pd.Series(['是' if x >= 60 else '否' for x in df['成績']])
print(df)
輸出結果如下:
姓名 成績 排名 是否及格
0 張三 89 1 是
1 李四 76 3 是
2 王五 67 4 是
3 趙六 92 2 是
二、pandas 添加一行數據
添加新的一行數據對 DataFrame 類型的數據進行擴充。與添加一列數據不同,添加一行數據通常需要先創建一個新的內存地址存儲完整的數據集,然後再合併到原有的數據集中。
下面的示例中,我們通過先構建一個新的數據 DataFrame,然後將其與原來的 DataFrame 進行合併,最終得到用於表示某個新生的完整數據。
import pandas as pd
# 創建一個 DataFrame
data = {'姓名': [ '張三', '李四', '王五', '趙六' ],
'成績': [ 89, 76, 67, 92 ],
'排名': [ 1, 3, 4, 2 ]}
df = pd.DataFrame(data)
# 創建一個新的 DataFrame 表示新的一行數據
new_row = pd.DataFrame({'姓名': ['小七'], '成績': [85], '排名': [5]})
# 將新的一行數據合併到原有的 DataFrame 中
df = pd.concat([df, new_row], ignore_index=True)
print(df)
輸出結果如下:
姓名 成績 排名
0 張三 89 1
1 李四 76 3
2 王五 67 4
3 趙六 92 2
4 小七 85 5
三、pandas 刪除某一列
有時候我們需要刪除 DataFrame 中某一列的數據,以便更好地滿足我們的數據分析需求。我們可以使用 pandas 的 drop 函數來去除不需要的列。
以下示例中,我們創建了一個包含產品名稱、銷售量和價格的 DataFrame 表格,我們要刪除“價格”一列數據。
import pandas as pd
# 創建一個 DataFrame
data = {'產品名稱': [ '商品A', '商品B', '商品C', '商品D' ],
'銷售量': [ 101, 87, 62, 99 ],
'價格': [ 10, 12, 8, 15 ]}
df = pd.DataFrame(data)
# 刪除“價格”一列數據
df = df.drop('價格', axis=1)
print(df)
輸出結果如下:
產品名稱 銷售量
0 商品A 101
1 商品B 87
2 商品C 62
3 商品D 99
四、pandas 讀取一列數據
讀取 DataFrame 中某一列的數據通常需要指定該列的名稱或者索引位置。我們可以使用 pandas 的 loc 函數、iloc 函數來進行單元格級別的索引,或者使用數據框的直接索引來獲取其中特定的列。
以下示例中,我們創建了一個包含學生信息、成績和排名的表格,我們要讀取“成績”和“排名”列數據。
import pandas as pd
# 創建一個 DataFrame
data = {'姓名': [ '張三', '李四', '王五', '趙六' ],
'成績': [ 89, 76, 67, 92 ],
'排名': [ 1, 3, 4, 2 ]}
df = pd.DataFrame(data)
# 使用iloc函數來索引“成績”和“排名”列數據
score_rank = df.iloc[:, 1:3]
print(score_rank)
# 使用數據框的直接索引來獲取“成績”和“排名”列數據
score_rank = df[['成績', '排名']]
print(score_rank)
輸出結果如下:
成績 排名
0 89 1
1 76 3
2 67 4
3 92 2
成績 排名
0 89 1
1 76 3
2 67 4
3 92 2
五、pandas 增加一列數據
在有時候我們需要增加 DataFrame 中的一列數據,並且該列數據來源於現有數據的連續運算,比如某一列數據的累加或者求平均值。在 pandas 中,我們可以使用 apply 函數來操作數據列。
以下示例中,我們創建了一個包含銷售門店名稱、銷售額和員工人數的 DataFrame 表格,我們要增加一列“平均銷售額”。
import pandas as pd
# 創建一個 DataFrame
data = {'門店名稱': [ '門店A', '門店B', '門店C', '門店D' ],
'銷售額': [ 10000, 12000, 8000, 15000 ],
'員工人數': [ 20, 15, 12, 25 ]}
df = pd.DataFrame(data)
# 定義函數計算平均銷售額
def avg_sales(row):
return row['銷售額'] / row['員工人數']
# 使用 apply 函數計算出新列數據
df['平均銷售額'] = df.apply(avg_sales, axis=1)
print(df)
輸出結果如下:
門店名稱 銷售額 員工人數 平均銷售額
0 門店A 10000 20 500.0
1 門店B 12000 15 800.0
2 門店C 8000 12 666.7
3 門店D 15000 25 600.0
六、pandas 輸出數據的行列數
在 pandas 中,我們可以使用 shape 屬性獲取數據集的行列數,使用 head 函數輸出前幾行數據,tail 函數輸出後幾行數據
以下示例中,我們創建了一個包含 1000 行、4 列的 DataFrame 數據表格,通過 head、tail 函數獲取數據的前五行和後五行, shape 屬性獲取數據的行列數。
import pandas as pd
import numpy as np
# 創建一個 1000 行,4 列的 DataFrame
df = pd.DataFrame(np.random.randn(1000, 4), columns=list('ABCD'))
# 輸出前 5 行數據
print(df.head(5))
# 輸出最後 5 行數據
print(df.tail(5))
# 輸出行列數
print('數據集的行列數為:', df.shape)
輸出結果如下:
A B C D
0 -0.842090 0.934622 -0.657901 0.353423
1 0.381760 -0.872082 0.974246 -1.220813
2 1.293013 -0.600729 0.429112 0.115918
3 -0.427546 0.456113 -0.782722 1.010340
4 0.876370 -0.664943 -1.511310 0.678428
A B C D
995 1.509793 -0.829112 -0.399677 -1.237050
996 0.658548 1.491414 -1.569960 0.214848
997 0.707204 -0.939782 0.139450 0.657119
998 0.423334 0.280183 -0.999327 -0.039078
999 -0.444732 0.645677 0.688853 -0.970362
數據集的行列數為: (1000, 4)
七、pandas 取兩列數據
有時候我們需要只關注數據集中的某幾列數據,用於不同的分析或者建模。我們可以使用 pandas 的 loc 函數、iloc 函數來進行單元格級別的索引,或者使用數據框的直接索引來獲取其中特定的列。
以下示例中,我們創建了一個包含學生信息、成績和排名的表格,我們要讀取“成績”和“排名”列數據。
import pandas as pd
# 創建一個 DataFrame
data = {'姓名': [ '張三', '李四', '王五', '趙六' ],
'成績': [ 89, 76, 67, 92 ],
'排名': [ 1, 3, 4, 2 ]}
df = pd.DataFrame(data)
# 使用iloc函數來索引“成績”和“排名”列數據
score_rank = df.iloc[:, 1:3]
print(score_rank)
# 使用數據框的直接索引來獲取“成績”和“排名”列數據
score_rank = df[['成績', '排名']]
print(score_rank)
輸出結果如下:
成績 排名
0 89 1
1 76 3
2 67 4
3 92 2
成績 排名
0 89 1
1 76 3
2 67 4
3 92 2
八、pandas 數據列的計算
在 pandas 中,我們可以對不同列的數據進行計算,以得到新的一列或多列數據。在數據計算時,我們通常使用 apply 函數或者 map 函數,以便對數據集中的每個單元格進行計算或者操作。
以下示例中,我們創建了一個包含工資和稅費的 DataFrame 表格,我們要計算出稅後工資,以增加一列“稅
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157569.html