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 = https://www.cnblogs.com/wang_yb/archive/2023/05/16/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 = https://www.cnblogs.com/wang_yb/archive/2023/05/16/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. 總結回顧
資料分析中,調整資料的值來試驗分析結果的變化情況是很常見的操作,
本篇主要介紹了資料修改的常用方法,從行列的修改到單個元素的修改,以及按照條件修改資料,
熟練掌握上面介紹的方法,讓我們在資料分析中更好的掌控自己的資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552619.html
標籤:其他
上一篇:java例外處理
下一篇:返回列表
