数据分析07——Pandas中对数据进行增删改查的操作

本文介绍了如何在PandasDataFrame中进行数据的增加、修改和删除操作,包括添加列数据、修改列索引、删除列,以及向数据框末尾添加行数据等。使用的关键方法有loc、insert、rename和drop等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、前言:

  • 在《数据分析06——Pandas中的数据抽取》中已经介绍了在Pandas中如何进行数据查找,而查找这个功能是增加修改和删除的前提。
  • 首先创建一个DataFrame数据,用于后面的举例。
  • 补充,在jupyter中要查看某个函数的参数详情,可以把光标放在函数上,然后按下shift+table。
import pandas as pd

data = [[109, 107, 100],
        [105, 114, 135],
        [98, 88, 120],
        [145, 150, 130]]
name = ['刘备', '关羽', '张飞', '诸葛亮']
columns = ['语文', '数学', '英语']

df = pd.DataFrame(
    data=data,
    index=name,
    columns=columns)

1、增加:

  • 增加列数据
    • 通过二维列表(一行代表一维)的方法增加数据
    df[['美术']]=[[15],[12],[13],[14]]
    
    df[['物理', '化学']] = [[88, 88],
                    [79, 79],
                    [60, 60],
                    [50, 60]]
    
    • 通过loc方法增加数据:df.loc[:, ‘物理’] = [88, 79, 60, 60] # 这种方法数据只能加在末尾
    • 通过insert方法:df.insert(1, ‘物理’, [88, 79, 60, 50]) # 表示在第二列位置新加一列物理
  • 增加行数据
    • 给末尾增加赵云的成绩:df.loc[‘赵云’] = [100, 120, 99, 98]
    • 增加多行数据:
    # 首先定义要新增的数据
    df2 = pd.DataFrame(
        {'语文': [100, 123, 138],
         '数学': [120, 142, 60],
         '英语': [99, 139, 99],
         '物理': [105, 110, 96]},
        index=['马超', '黄忠', '姜维'])
    
    df3 = df.append(df2)	# 然后新增数据,注意如果append之后不赋值,结果就不会保存。
    

2、修改:

  • 修改列索引:
    • 通过属性赋值:df.columns = [‘语文’, ‘物理(上)’, ‘数学’, ‘英语’]
    • 通过rename方法:
    df.rename(
    columns={'语文': '语文(上)',
             '英语': '英语(上)'},
    inplace=True)
    # inplace:表示是否修改原来的数据
    
    # 写法二:axis为0表示行索引,axis为1表示列索引
    # df.rename(
    #    mapper={'语文': '语文(0)',
    #             '英语': '英语(1)'},
    #    axis=1, inplace=True)
    df
    
    
    • 总结:属性修改要写上所有属性,即使有的属性不用修改,而rename的方法就比较准确了,改谁写谁。
  • 修改行索引:
  • 通过属性赋值:df.index = [1, 2, 3, 4, 5]
    • 通过rename方法:
    df.rename(
        index={
            '刘备': 101,
            '关羽': 102,
            '张飞': 103,
            '诸葛亮': 104,
            '赵云': 105},
        inplace=True)
    # inplace:表示是否修改原来的数据
    
    # 写法二:
    # df.rename(
    #     mapper={
    #         '刘备': 101,
    #         '关羽': 102,
    #         '张飞': 103,
    #         '诸葛亮': 104,
    #         '赵云': 105},
    #     axis=0, inplace=True)
    
    • 总结:属性修改要写上所有属性,即使有的属性不用修改,而rename的方法就比较准确了,改谁写谁。
  • 修改列数据:df.loc[:, ‘语文’] = [115, 108, 112, 118, 115]
  • 修改行数据:df.loc[‘张飞’] = [120, 115, 109, 105]
  • 修改具体的值:
    • df.iloc[0, 0] = 115
    • df.loc[‘张飞’, ‘语文’] = 115

3、删除:

  • 删除列数据:
    • df.drop(columns=‘数学’, inplace=True) # inplace表示是否修改本地数据
    • df.drop(labels=‘数学’, axis=1, inplace=True)
  • 删除行数据:
    • df.drop(index=‘张飞’, inplace=True)
    • df.drop(labels=‘张飞’, axis=0, inplace=True)
  • 删除指定条件的数据
# 删除要找到对应的行索引或者列索引
index = df[df['物理'].isin([50, 79])].index
# 根据符合条件的索引,通过删除行数据或者列数据的方法删除
df.drop(index=index, inplace=True)

总结:

  • 抽取数据是进行增删改的基础,对于同一种需求,在pandas中实现方法很多,有时候同一个函数方法,也可以采用不同的参数实现同一种作用,所以pandas真的很灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值