pandas 作為一種常用的數據分析工具,提供了廣泛的數據修改方法。 既可以針對行或者列的數據進行修改,也可以對具體單個元素進行修改,還可以基於條件選擇要修改的行或者列的數據。 1. 增加數據 1.1 增加行數據 pandas的DataFrame增加一行或者多行數據之前是使用append方法。 im ...
pandas
作為一種常用的數據分析工具,提供了廣泛的數據修改方法。
既可以針對行或者列的數據進行修改,也可以對具體單個元素進行修改,還可以基於條件選擇要修改的行或者列的數據。
1. 增加數據
1.1 增加行數據
pandas
的DataFrame
增加一行或者多行數據之前是使用append
方法。
import pandas as pd
df = pd.DataFrame(columns=["name", "age", "gender"])
df = df.append(
[
{"name": "小紅", "age": 13, "gender": "女"},
{"name": "小明", "age": 15, "gender": "男"},
],
ignore_index=True,
)
df
使用append方法會有FutureWarning警告,說明append方法以後會被淘汰,不建議使用此方法來增加數據。
建議使用的方法是 concat
。
當兩個DataFrame
列相同的時候,通過concat
可以其中一個DataFrame
的行添加到另一個DataFrame
中。
import pandas as pd
df = pd.DataFrame(columns=["name", "age", "gender"])
new_data = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df = pd.concat([df, new_data[:1])
df
1.2 增加列數據
增加列數據用insert
方法,insert
方法有關鍵參數有三個:
- loc:列插入的位置,從0開始
- column:列名稱
- value:插入的值
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df.insert(3, "score", [100, 95])
df
如果想把新的列插入到前面,修改insert
方法的第一個參數。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
df.insert(1, "score", [100, 95])
df
此外,前面增加行數據的concat
方法也可以增加列數據,按列添加時,設置axis=1
。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明"],
"age": [13, 15],
"gender": ["男", "女"],
}
)
new_data = pd.DataFrame({"score": [100, 95]})
df = pd.concat([df, new_data], axis=1)
df
2. 刪除數據
刪除數據使用drop
方法,drop
方法的axis
參數控制刪除行還是列。
2.1 刪除行
刪除單行:
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.drop(1, axis=0)
刪除多個行:
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.drop([0, 2], axis=0)
2.2 刪除列
刪除單個列:
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.drop("age", axis=1)
刪除多個列:
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.drop(["age", "gender"], axis=1)
3. 修改數據
修改數據既可以使用之前介紹過的loc
和iloc
方法,也可以通過條件過濾出需要修改的值。
這裡再次提醒下loc
和iloc
的區別:
- loc使用標簽,iloc使用索引
- loc的行和列的標簽是包含端點的,iloc的行和列的索引是不包含端點的
3.1 單個數據修改
通過loc
或者iloc
定位到具體的元素,然後修改。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.loc[0, "name"] = "小黃"
# OR df.iloc[0, 0] = "小黃"
3.2 多個數據修改
通過loc
或者iloc
定位多個行和列,然後修改。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.loc[0:1, "age"] = 18
# OR df.iloc[0:2, 1] = 18
3.3 按條件修改
loc
或者iloc
也可以設置條件來過濾出要修改的數據。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小紅", "小明", "小華"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.loc[df["age"] > 13, "age"] = 20
# OR df.iloc[df["age"] > 13, 1] = 20
4. 總結回顧
數據分析中,調整數據的值來試驗分析結果的變化情況是很常見的操作。
本篇主要介紹了數據修改的常用方法,從行列的修改到單個元素的修改,以及按照條件修改數據。
熟練掌握上面介紹的方法,讓我們在數據分析中更好的掌控自己的數據。