pandas
作为一种常用的数据分析工具,提供了广泛的数据修改方法。
既可以针对行或者列的数据进行修改,也可以对具体单个元素进行修改,还可以基于条件选择要修改的行或者列的数据。
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
增加列数据用insert
方法,insert
方法有关键参数有三个:
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
删除数据使用drop
方法,drop
方法的axis
参数控制删除行还是列。
删除单行:
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)
删除单个列:
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)
修改数据既可以使用之前介绍过的loc
和iloc
方法,也可以通过条件过滤出需要修改的值。
这里再次提醒下loc
和iloc
的区别:
通过loc
或者iloc
定位到具体的元素,然后修改。
import pandas as pd
df = pd.DataFrame(
{
"name": ["小红", "小明", "小华"],
"age": [13, 15, 14],
"gender": ["男", "女", "男"],
}
)
df.loc[0, "name"] = "小黄"
# OR df.iloc[0, 0] = "小黄"
通过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
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
数据分析中,调整数据的值来试验分析结果的变化情况是很常见的操作。
本篇主要介绍了数据修改的常用方法,从行列的修改到单个元素的修改,以及按照条件修改数据。
熟练掌握上面介绍的方法,让我们在数据分析中更好的掌控自己的数据。