Pandas进阶:4个高效的单行代码

本文分享了如何使用Pandas库中的4个高效代码片段:从列表创建字典、从JSON文件创建DataFrame、explode函数处理列表数据和combine_first函数处理缺失值。这些技巧有助于数据分析师快速解决常见任务。

大家好,第三方库是为了满足某种需求而被创建和开发的。开发者意识到一个问题,并想出了一个解决方案来帮助解决它,这就是工具的产生方式。

毫无疑问,Pandas拥有一个高度活跃的社区,使其成为数据科学生态系统中最受欢迎的数据分析和清洗库之一。Pandas具有解决特定问题和使用案例的功能,这些功能必然是社区中活跃使用者提出的需求。

本文我们将与大家分享4个可以使用一行代码在Pandas中完成的操作,这些操作可以帮助大家高效地解决特定任务。

1.从列表创建字典

假设有一个项目列表,想要查看它们的分布情况。更具体地说,是想查看列表中的唯一值及其出现次数。

Python字典是以这种格式存储数据的好方法,项目将是字典的键,出现次数将是值。借助value_countsto_dict函数,这个任务可以在一行代码中完成。

以下是一个简单的示例来演示这种情况:

import pandas as pd

grades = ["A", "A", "B", "B", "A", "C", "A", "B", "C", "A"]

pd.Series(grades).value_counts().to_dict()

# 输出
{'A': 5, 'B': 3, 'C': 2}

首先将列表转换为Pandas Series,这是Pandas的一维数据结构。然后应用value_counts函数,在Series中获取唯一值及其在系列中的频率,最后将输出转换为字典。

2.从JSON文件创建DataFrame

JSON是一种经常用于存储和传递数据的文件格式,当从API请求数据时,很可能是以JSON格式传递的。

在清洗、处理或分析数据时,通常更希望它以表格格式(即类似于表格的数据结构)存在。可以借助json_normalize函数,通过一次操作将JSON格式的对象创建为Pandas DataFrame。

假设数据存储在名为data.json的JSON文件中,按以下方式读取它:

import json

with open("data.json") as f:
    data = json.load(f)

data
# 输出
{'data': [{'id': 101,
   'category': {'level_1': 'code design', 'level_2': 'method design'},
   'priority': 9},
  {'id': 102,
   'category': {'level_1': 'error handling', 'level_2': 'exception logging'},
   'priority': 8}]}

如果将这个变量传递给DataFrame构造函数,它将创建一个如下所示的DataFrame,这显然不是一个可用的格式:

df = pd.DataFrame(data)

图片

如果使用json_normalize函数并提供记录路径,将会得到一个格式整洁、清晰的DataFrame:

df = pd.json_normalize(data, "data")

图片

3.Explode函数

考虑这样一种情况:有一个与特定记录相匹配的项目列表,需要重新格式化该列表,使得列表中的每个项目都有单独的一行。

下面的图示说明了需要完成的内容:

图片

可以想出许多不同的方法来解决这个任务,其中最简单的之一(也可能是最简单的)就是explode函数。现在有以下DataFrame:

图片

我们将使用explode函数并指定要拆分的列名:

df_new = df.explode(column="data").reset_index(drop=True)

图片

reset_index会为生成的DataFrame分配一个新的整数索引,否则拆分之前的索引将被保留(即所有键值为A的行的索引都会是0)。

4.Combine First

combine_first函数用于特定目的,但它极大地简化了该项特定任务。以下是希望使用combine_first函数的特定情况:

你想从DataFrame中提取一列。如果该列中有缺失值,则希望用另一列中的值替换这些缺失值。

在这方面它与SQL中的COALESCE函数执行相同的操作,接下来创建一个带有一些缺失值的示例DataFrame:

df = pd.DataFrame(
    {
        "A": [None, 0, 12, 5, None], 
        "B": [3, 4, 1, None, 11]
    }
)

图片

我们需要列A中的数据,如果有一行有缺失值(即NaN),希望用同一行中列B的值来填充它。

df["A"].combine_first(df["B"])

# 输出
0     3.0
1     0.0
2    12.0
3     5.0
4    11.0
Name: A, dtype: float64

从输出中可以看出,列A的第一行和最后一行来自列B。

如果有3列需要使用,可以链接多个combine_first函数。以下一行代码首先检查列A,如果有缺失值,它会从列B中获取。如果列B中对应的行也是NaN,那么它会从列C中获取值。

df["A"].combine_first(df["B"]).combine_first(df["C"])

我们还可以在DataFrame级别上使用combine_first函数,在这种情况下,所有缺失值都将由第二个DataFrame中对应的值(即相同行,相同列)来填充。

在信息技术快速发展的背景下,构建高效的数据处理与信息管理平台已成为提升企业运营效能的重要途径。本文系统阐述基于Pentaho Data Integration(简称Kettle)中Carte组件实现的任务管理架构,重点分析在系统构建过程中采用的信息化管理方法及其技术实现路径。 作为专业的ETL(数据抽取、转换与加载)工具,Kettle支持从多样化数据源获取信息,并完成数据清洗、格式转换及目标系统导入等操作。其内置的Carte模块以轻量级HTTP服务器形态运行,通过RESTful接口提供作业与转换任务的远程管控能力,特别适用于需要分布式任务调度与状态监控的大规模数据处理环境。 在人工智能应用场景中,项目实践常需处理海量数据以支撑模型训练与决策分析。本系统通过整合Carte服务功能,构建具备智能调度特性的任务管理机制,有效保障数据传递的准确性与时效性,并通过科学的并发控制策略优化系统资源利用,从而全面提升数据处理效能。 在系统架构设计层面,核心目标在于实现数据处理流程的高度自动化,最大限度减少人工干预,同时确保系统架构的弹性扩展与稳定运行。后端服务采用Java语言开发,充分利用其跨平台特性与丰富的类库资源构建稳健的服务逻辑;前端界面则运用HTML5、CSS3及JavaScript等现代Web技术,打造直观的任务监控与调度操作界面,显著提升管理效率。 关键技术要素包括: 1. Pentaho数据集成工具:提供可视化作业设计界面,支持多源数据接入与复杂数据处理流程 2. Carte服务架构:基于HTTP协议的轻量级服务组件,通过标准化接口实现远程任务管理 3. 系统设计原则:遵循模块化与分层架构理念,确保数据安全、运行效能与系统可维护性 4. Java技术体系:构建高可靠性后端服务的核心开发平台 5. 并发管理机制:通过优先级调度与资源分配算法实现任务执行秩序控制 6. 信息化管理策略:注重数据实时同步与系统协同运作,强化决策支持能力 7. 前端技术组合:运用现代Web标准创建交互式管理界面 8. 分布式部署方案:依托Carte服务实现多节点任务分发与状态监控 该管理系统的实施不仅需要熟练掌握Kettle工具链与Carte服务特性,更需统筹Java后端架构与Web前端技术,最终形成符合大数据时代企业需求的智能化信息管理解决方案。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)内容概要:本文围绕状态估计与数据融合技术展开,重点研究了基于卡尔曼滤波(KF)、无迹卡尔曼滤波(UKF)、扩展卡尔曼滤波(EKF)、粒子滤波(PF)、固定增益卡尔曼滤波(FKF)和分布式卡尔曼滤波(DKF)等多种滤波算法的理论与Matlab代码实现,涵盖其在非线性系统、多源数据融合及动态环境下的应用。文中结合具体案例如四旋翼飞行器控制、水下机器人建模等,展示了各类滤波方法在状态估计中的性能对比与优化策略,并提供了完整的仿真代码支持。此外,还涉及信号处理、路径规划、故障诊断等相关交叉领域的综合应用。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、机器人、导航与控制系统开发的工程技术人员。; 使用场景及目标:①深入理解各类卡尔曼滤波及其变种的基本原理与适用条件;②掌握在实际系统中进行状态估计与数据融合的建模与仿真方法;③为科研项目、论文复现或工程开发提供可运行的Matlab代码参考与技术支撑; 阅读建议:建议结合文中提供的Matlab代码逐项运行与调试,对照算法流程理解每一步的数学推导与实现细节,同时可拓展至其他非线性估计问题中进行对比实验,以提升对滤波算法选型与参数调优的实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python慕遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值