翼度科技»论坛 编程开发 python 查看内容

【pandas基础】--数据修改

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
pandas 作为一种常用的数据分析工具,提供了广泛的数据修改方法。
既可以针对或者的数据进行修改,也可以对具体单个元素进行修改,还可以基于条件选择要修改的或者的数据。
1. 增加数据

1.1 增加行数据

pandas的DataFrame增加一行或者多行数据之前是使用append方法。
  1. import pandas as pd
  2. df = pd.DataFrame(columns=["name", "age", "gender"])
  3. df = df.append(
  4.     [
  5.         {"name": "小红", "age": 13, "gender": "女"},
  6.         {"name": "小明", "age": 15, "gender": "男"},
  7.     ],
  8.     ignore_index=True,
  9. )
  10. df
复制代码

使用append方法会有FutureWarning警告,说明append方法以后会被淘汰,不建议使用此方法来增加数据。
建议使用的方法是 concat。
当两个DataFrame列相同的时候,通过concat可以其中一个DataFrame的行添加到另一个DataFrame中。
  1. import pandas as pd
  2. df = pd.DataFrame(columns=["name", "age", "gender"])
  3. new_data = pd.DataFrame(
  4.     {
  5.         "name": ["小红", "小明"],
  6.         "age": [13, 15],
  7.         "gender": ["男", "女"],
  8.     }
  9. )
  10. df = pd.concat([df, new_data[:1])
  11. df
复制代码

1.2 增加列数据

增加列数据用insert方法,insert方法有关键参数有三个:

  • loc:列插入的位置,从0开始
  • column:列名称
  • value:插入的值
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明"],
  5.         "age": [13, 15],
  6.         "gender": ["男", "女"],
  7.     }
  8. )
  9. df.insert(3, "score", [100, 95])
  10. df
复制代码

如果想把新的列插入到前面,修改insert方法的第一个参数。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明"],
  5.         "age": [13, 15],
  6.         "gender": ["男", "女"],
  7.     }
  8. )
  9. df.insert(1, "score", [100, 95])
  10. df
复制代码

此外,前面增加行数据的concat方法也可以增加列数据,按列添加时,设置axis=1。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明"],
  5.         "age": [13, 15],
  6.         "gender": ["男", "女"],
  7.     }
  8. )
  9. new_data = pd.DataFrame({"score": [100, 95]})
  10. df = pd.concat([df, new_data], axis=1)
  11. df
复制代码

2. 删除数据

删除数据使用drop方法,drop方法的axis参数控制删除行还是列。
2.1 删除行

删除单行:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.drop(1, axis=0)
复制代码

删除多个行:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.drop([0, 2], axis=0)
复制代码

2.2 删除列

删除单个列:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.drop("age", axis=1)
复制代码

删除多个列:
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.drop(["age", "gender"], axis=1)
复制代码

3. 修改数据

修改数据既可以使用之前介绍过的loc和iloc方法,也可以通过条件过滤出需要修改的值。
这里再次提醒下loc和iloc的区别:

  • loc使用标签,iloc使用索引
  • loc的行和列的标签是包含端点的,iloc的行和列的索引是不包含端点
3.1 单个数据修改

通过loc或者iloc定位到具体的元素,然后修改。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.loc[0, "name"] = "小黄"
  10. # OR df.iloc[0, 0] = "小黄"
复制代码

3.2 多个数据修改

通过loc或者iloc定位多个行和列,然后修改。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.loc[0:1, "age"] = 18
  10. # OR df.iloc[0:2, 1] = 18
复制代码

3.3 按条件修改

loc或者iloc也可以设置条件来过滤出要修改的数据。
  1. import pandas as pd
  2. df = pd.DataFrame(
  3.     {
  4.         "name": ["小红", "小明", "小华"],
  5.         "age": [13, 15, 14],
  6.         "gender": ["男", "女", "男"],
  7.     }
  8. )
  9. df.loc[df["age"] > 13, "age"] = 20
  10. # OR df.iloc[df["age"] > 13, 1] = 20
复制代码

4. 总结回顾

数据分析中,调整数据的值来试验分析结果的变化情况是很常见的操作。
本篇主要介绍了数据修改的常用方法,从行列的修改到单个元素的修改,以及按照条件修改数据。
熟练掌握上面介绍的方法,让我们在数据分析中更好的掌控自己的数据。

来源:https://www.cnblogs.com/wang_yb/p/17406123.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具