page contents

Python pandas实现数据追加和合并的最佳方法!

在数据分析和处理的过程中,经常需要将新的数据追加到现有的数据集上,例如将新的记录添加到数据框(DataFrame)中或将多个数据集合并成一个更大的数据集。Python的pandas库提供了多种方式来高效地追加数据,不论是追加单行、合并多行数据,还是将不同的数据集组合在一起,都能轻松实现。

attachments-2024-11-R72VkXQp672580a5bb0b0.png在数据分析和处理的过程中,经常需要将新的数据追加到现有的数据集上,例如将新的记录添加到数据框(DataFrame)中或将多个数据集合并成一个更大的数据集。Python的pandas库提供了多种方式来高效地追加数据,不论是追加单行、合并多行数据,还是将不同的数据集组合在一起,都能轻松实现。

使用append()追加数据

append()是pandas中最简单、直观的追加方法之一,它可以将一个或多个数据行添加到现有的DataFrame中,适用于追加单行或多个数据行的情形。

基本用法

以下示例展示了如何使用append()方法将一行数据追加到一个DataFrame中:

import pandas as pd

# 创建一个初始的DataFrame

df = pd.DataFrame({

    'Name': ['Alice', 'Bob'],

    'Age': [24, 27]

})

# 创建一行新数据

new_row = pd.DataFrame({

    'Name': ['Charlie'],

    'Age': [22]

})

# 使用 append 方法追加数据

df = df.append(new_row, ignore_index=True)

print(df)

输出结果为:

      Name  Age

0    Alice   24

1      Bob   27

2  Charlie   22

在这里,ignore_index=True的作用是重置索引,使新行的数据按顺序添加到DataFrame的末尾,并重新生成索引。通常建议将ignore_index设置为True,以确保索引顺序保持一致。

追加多行数据

除了追加单行,append()还支持将多个数据行追加到现有的DataFrame中。以下示例展示了如何使用append()追加多行数据:

# 创建一个新的DataFrame,包含多行数据

new_data = pd.DataFrame({

    'Name': ['David', 'Eve'],

    'Age': [29, 32]

})

# 使用 append 方法追加多行数据

df = df.append(new_data, ignore_index=True)

print(df)

输出结果为:

      Name  Age

0    Alice   24

1      Bob   27

2  Charlie   22

3    David   29

4      Eve   32

在这个示例中,append()成功将多行数据添加到现有的DataFrame中,并且重新排列了索引。append()虽然简单易用,但它会创建新的DataFrame,因此在处理大数据集时效率相对较低。

使用concat()合并数据

concat()函数提供了另一种将数据追加到DataFrame的方法,尤其适合合并多个DataFrame。相比于append(),concat()更加灵活且效率更高,适用于需要合并多个DataFrame的情况。

基本用法

以下示例展示了如何使用concat()将两个DataFrame合并在一起:

# 创建两个DataFrame

df1 = pd.DataFrame({

    'Name': ['Alice', 'Bob'],

    'Age': [24, 27]

})

df2 = pd.DataFrame({

    'Name': ['Charlie', 'David'],

    'Age': [22, 29]

})

# 使用 concat 方法合并数据

df = pd.concat([df1, df2], ignore_index=True)

print(df)

输出结果为:

      Name  Age

0    Alice   24

1      Bob   27

2  Charlie   22

3    David   29

concat()函数接受一个DataFrame列表作为参数,通过设置ignore_index=True来确保索引按顺序排列。相比于append(),concat()在合并多个DataFrame时更加高效。

按列追加数据

concat()不仅可以用于行追加,也可以用于列追加,即在DataFrame的列方向上进行拼接。以下示例展示了按列追加数据的操作:

# 创建两个DataFrame

df1 = pd.DataFrame({

    'Name': ['Alice', 'Bob'],

    'Age': [24, 27]

})

df2 = pd.DataFrame({

    'Gender': ['F', 'M']

})

# 按列追加数据

df = pd.concat([df1, df2], axis=1)

print(df)

输出结果为:

    Name  Age Gender

0  Alice   24      F

1    Bob   27      M

在这里,通过设置axis=1,我们将df1和df2按列方向进行了合并,使数据框横向扩展。

使用loc追加数据

loc是pandas用于定位和插入数据的一个非常强大的工具,通常用于按指定位置插入数据。相比于append()和concat(),loc更适合逐行追加数据到现有DataFrame的末尾。

使用loc逐行追加数据

以下示例展示了如何使用loc将一行新数据追加到DataFrame的末尾:

# 创建一个初始的DataFrame

df = pd.DataFrame({

    'Name': ['Alice', 'Bob'],

    'Age': [24, 27]

})

# 使用 loc 方法逐行追加数据

df.loc[len(df)] = ['Charlie', 22]

print(df)

输出结果为:

      Name  Age

0    Alice   24

1      Bob   27

2  Charlie   22

在这里,len(df)表示当前DataFrame的行数,df.loc[len(df)]表示在DataFrame的末尾追加一行数据。使用loc追加数据可以避免创建新DataFrame,因此在需要频繁追加数据的场景中效率较高。

追加数据的性能比较

当需要频繁追加数据时,应该尽量避免使用append(),因为它会在每次调用时创建一个新的DataFrame,这在处理大量数据时性能会受到严重影响。对于需要频繁追加的大量数据,建议使用列表收集数据,最后通过concat()进行一次性合并。

以下示例展示了该方法的优点:

# 创建一个空列表,用于暂存数据

data = []

# 模拟批量追加数据

for i in range(1000):

    data.append({'Name': f'Name_{i}', 'Age': i})

# 将列表转换为DataFrame

df = pd.concat([pd.DataFrame(data)], ignore_index=True)

print(df)

这种方法将所有数据存储在列表中,最后一次性转换为DataFrame。相比于每次使用append()或loc进行逐行追加,这种方法更加高效。

实际场景中的数据追加

在数据处理中,经常需要将多个数据源合并到一个DataFrame中,例如合并多个月份的销售记录。

以下是一个简单的场景示例,展示如何将不同月份的数据追加到一个总的DataFrame中:

# 创建每月的销售数据

jan_sales = pd.DataFrame({

    'Date': ['2024-01-01', '2024-01-02'],

    'Sales': [200, 150]

})

feb_sales = pd.DataFrame({

    'Date': ['2024-02-01', '2024-02-02'],

    'Sales': [180, 220]

})

# 合并多个DataFrame

all_sales = pd.concat([jan_sales, feb_sales], ignore_index=True)

print(all_sales)

输出结果为:

         Date  Sales

0  2024-01-01    200

1  2024-01-02    150

2  2024-02-01    180

3  2024-02-02    220

通过concat(),我们将每月的销售数据按行追加到一个总的DataFrame中,便于后续的统计和分析。

总结

在数据分析中,数据追加是处理动态数据集的常见需求。Python的pandas库提供了多种方法来高效地完成数据追加,例如append()、concat()和loc。append()适合小规模数据的简单追加,concat()则更适用于合并多个数据集或批量追加操作,而loc可以直接按指定行添加数据。对于大量数据,使用列表收集后统一转换为DataFrame也是一种高效方案。根据不同的场景选择合适的方法,可以显著提高处理效率和代码可读性。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-11-02 09:31
  • 阅读 ( 116 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章