当前位置: 首页 > news >正文

Pandas中数据清理、连接数据以及合并多个数据集的方法

一、简介

1.数据清理的重要性:在进行数据分析前,需进行数据清理,使每个观测值成一行、每个变量成一列、每种观测单元构成一张表格。

2.数据组合的必要性:数据整理好后,可能需要将多张表格组合才能进行某些分析,例如一张表保存公司名称,另一张表保存股票价格;单个数据集也可能分割成多个,如时间序列数据按日期分在不同文件中。

二:连接数据

连接数据时将某行或某列追加到数据中的操作,适用于数据被分成多分或需将计算结果追加到现有数据集的情况。

添加行:

        1.DataFrame连接:使用concat函数,需将多个 DataFrame 放入同一个列表中,连接后可通过ilocloc等方法取出子集。例如:row_concat = pd.concat([df1, df2, df3])

        2.DataFrame和Series连接:直接用concat连接时,由于 Series 无行索引,会添加新列且缺失值用 NaN 填充;若要将 Series 作为行连接,需创建 DataFrame 并指定列名。

        3.append函数:当只需向现有 DataFrame 追加一个对象时使用,可追加 DataFrame 或 Python 字典(追加字典需传入ignore_index = True)。例如:df1.append(new_row_df)、df1.append(data_dict,ignore_index = True)。

        4.重置索引:连接多个DataFrame时,通过ignore_index = True参数可忽略后面DataFrame的索引。

添加列:

        1.concat函数:与添加行类似,需传入axis=columns参数按列添加,可通过列名获取子集。例如:pd.concat([df1,df2,df3],axis = 'columns')。

        2.通过dataframe['列名'] = ['值']:无需调用函数,直接为DataFrame添加一列。例如:col_concat['new_col'] = ['n1,'n2','n3','n4']。

        3.通过dataframe['列名'] = Series对象:将 Series 对象作为新列添加到 DataFrame。

        4.重置索引:按列合并数据后,可重置列索引获得有序索引,如pd.concat([df1,df2,df3],axis='columns',ignore_index = True).

三:合并多个数据集

1.简介

        Pandas 中可通过pd.join和pd.merge实现类似数据库的 join 操作,merge更灵活,若依据行索引合并可考虑 join函数,concat连接数据时涉及 join参数(inner或outer)。

2.加载数据

        使用read_sql_query函数从数据库读取表,第一个参数为表名,第二个参数为数据库连接对象。例如 :tracks = pd.read_sql_query("SELECT * from tracks",con)

3.一对一合并

        涉及两个 DataFrame,连接的列不含重复值,通过on指定合并列,how指定连接方式(left、right、outer、inner,分别对应 SQL 中的左外连接、右外连接、全外连接、内连接)。

4.多对一合并

        例如使用 tracks 全部数据与其他表合并,可进行数据转换(如用to_timedelta转换时间单位)、计算平均值等操作;还可多表合并计算,如结合用户表、发票表、发票详情表计算每名用户的平均消费,通过assign方法创建新列,再按指定列分组求和排序。

5.join合并

        可依据两个 DataFrame 的行索引,或一个 DataFrame 的行索引与另一个的列索引合并。若有相同列名,需用lsuffix和rsuffix指定后缀;也可先设置行索引再合并。

四:总结

函数 / 方法特点对齐方式默认连接方式
concatPandas 函数,可垂直和水平连接两个或多个 pandas 对象只用索引对齐外连接(可设为内连接)
joinDataFrame 方法,只能水平连接两个或多个 pandas 对象靠被调用的 DataFrame 的列索引或行索引和另一个对象的行索引对齐左连接(可设为内连接、外连接、右连接)
mergeDataFrame 方法,只能水平连接两个 DataFrame 对象靠被调用的 DataFrame 的列或行索引和另一个 DataFrame 的列或行索引对齐内连接(可设为左连接、外连接、右连接)

         

http://www.dtcms.com/a/339966.html

相关文章:

  • 仿新浪微博 typecho 主题模板源码
  • 1. AutoSAR 技术学习
  • Spring AOP核心原理与实战指南
  • 任务十一 搜索页面开发
  • Incredibuild 新增 Unity 支持:击破构建时间过长的痛点
  • AutoSarAP状态管理的状态机能否理解成C++的类?
  • 电视系统:开启视听新时代
  • 一个多功能的文件分享工具--zdir手动部署教程
  • 垂直领域大模型构建:法律行业“类ChatGPT”系统的训练与落地
  • el-table合并单元格
  • 接口自动化测试大全(python+pytest+allure)
  • Angular极速入门
  • 【CUDA教程--3】通过简单的矩阵运算入门CUDA
  • cursor+mcp-clickhouse进行数据分析
  • Spring循环依赖源码调试详解,用两级缓存代替三级缓存
  • JB4-9-任务调度
  • 网络通信基础:从数据链路层到传输层
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘paramiko’问题
  • Leetcode 3652. Best Time to Buy and Sell Stock using Strategy
  • 【20250819】mathtype的使用
  • Sklearn 机器学习 房价预估 计算房价和特征值的相关性
  • 差分约束系统SPFA判负环
  • 【自动驾驶】8月 端到端自动驾驶算法论文(arxiv20250819)
  • 决策树1.1
  • 设计模式笔记_行为型_解释器模式
  • 集成电路学习:什么是Thresholding阈值处理
  • PowerBI VS FineBI VS QuickBI实现帕累托分析
  • Go 并发入门:从 goroutine 到 worker pool
  • 用 C++ 构建高性能测试框架:从原型到生产实战指南
  • Python 项目里的数据预处理工作(数据清洗步骤与实战案例详解)