构建AI智能体:五、Pandas常用函数介绍,CodeBuddy智能化处理Excel数据实例

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: Pandas是Python核心数据分析库,提供Series、DataFrame等灵活数据结构,支持高效的数据读写、清洗、筛选、合并与统计操作,广泛应用于数据处理与分析场景。

一、Pandas基础

     Pandas是Python的一个数据分析包,用于数据操作和分析,拥有灵活和表达力强的数据结构,提供了大量的快速便捷的处理数据的函数和方法。

  • 常用数据结构说明:
  • Series:一维数组,与Numpy中的一维array类似,可以保存不同种数据类型,包括字符串、boolean值、数字等。
  • Time-Series:以时间为索引的Series。
  • DataFrame:二维的表格型数据结构,可以将DataFrame理解为Series的容器。
  • Panel :三维的数组,可以理解为DataFrame的容器。


二、核心数据结构

1.声明一个一维带标签的数组(类似字典)

import pandas as pds
s = pd.Series([3, 6, 9], index=['a', 'b', 'c'])

输出结果:

a    3
b    6
c    9
dtype: int64


2.声明一个二维表格(类似Excel)

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['NY', 'Paris', 'London']
}
df = pd.DataFrame(data)

输出结果:

Name Age City
0 Alice 25 NY
1 Bob 30 Paris
2 Charlie 35 London


三、基础操作

1.查看数据

df.head(2)      # 前2行
df.tail(1)      # 最后1行
df.shape        # 维度 (3, 3)
df.info()       # 数据类型和内存
df.describe()   # 数值列统计摘要
df.columns      # 显示所有列
df.values       # 显示所有值

2.选择数据

df['Name']              # 单列 → Series
df[['Name', 'City']]    # 多列 → DataFrame
df.iloc[0]              # 第一行(按位置)
df.loc[0, 'Age']        # 第一行的Age值(按标签)

3.过滤数据

df[df['Age'] > 25]               # Age大于25的行
df.query("City == 'Paris'")      # 使用query方法

4.处理缺失值

df.dropna()      # 删除含NaN的行
df.fillna(0)     # 将NaN替换为0

注意:此示例中导入了numpy包,声明了一个为NaN的数据列,进行效果演示


四、数据操作

1. 新增列

df['Salary'] = [70000, 80000, 90000]  # 添加新列

2. 分组聚合

df.groupby('City')['Age'].mean()  # 按城市分组计算平均年龄

3.排序

df.sort_values('Age', ascending=False)  # 按年龄降序

4.数据转置

数据转置是一种常见的数据处理操作,指将数据表的行列互换(即行变列、列变行),需加深印象,画重点!

df.T   # 数据转置

  • 转置的主要应用场景:
  • 矩阵运算:
  1. 在进行线性代数运算时,如矩阵乘法,转置操作是必不可少的‌
  2. 转置后的矩阵可以简化某些数学运算过程
  • 数据可视化:
  1. 在做数据报表展示时,转置数据可以更直观地展示在图表中‌
  2. 以不同视角呈现数据:例如学生成绩数据,转置前适合查看每个学生的成绩情况,转置后则便于观察每个学科的学习情况‌

    此处只做初步了解,后续遇到详细实际场景再详细说明;


五、I/O操作

1.读写文件

# 读取CSV/Excel/SQL
df = pd.read_csv('data.csv')
df = pd.read_excel('data.xlsx')
# 保存数据
df.to_csv('new_data.csv', index=False)


六、常用函数

df.rename() #重命名列名
df.drop()   #删除行/列
pd.concat() #合并多个DataFrame
df.merge()  #数据库风格的合并

 merge函数‌

       merge函数‌需要重点关注,今天的实例中也会用到,主要用于合并两个数据集(如DataFrame),支持多种连接方式(如内连接、左连接、右连接、外连接),类似数据库查询的Left jion,Right Join ,Inner Join

  • ‌基本用途‌:
  • merge函数通过公共列(键)将两个数据集横向合并,类似于SQL中的JOIN操作。其核心参数包括:
  • left/right:待合并的两个数据集
  • on:指定连接的列名,需在两个数据集中存在
  • how:定义连接方式(默认为inner,其他选项包括left、right、outer)
  • ‌连接类型‌:
  • ‌内连接(inner)‌:仅保留键列匹配的行(交集)。‌‌
  • ‌左连接(left)‌:保留左侧数据集所有行,右侧匹配缺失值填充NaN。‌‌
  • ‌右连接(right)‌:保留右侧数据集所有行,左侧匹配缺失值填充NaN。‌‌
  • ‌外连接(outer)‌:保留所有行,未匹配部分填充NaN。‌‌
  • ‌高级用法‌:
  • ‌多列匹配‌:通过on指定多列作为复合键。‌‌
  • ‌自定义列名‌:若列名不同,可使用left_on和right_on分别指定。‌‌
  • ‌处理重复列‌:合并后相同列名自动添加后缀(如.x、.y)


七、Excel操作实例

初步了解了Pandas的常规用法,下面结合CodeBuddy看一个Excel数据集的操作实例,项目中有两个Excel文档,分别是“员工基本信息表.xlsx”、“员工绩效表.xlsx”


打开CodeBuddy,发送指令:

"编写Python,打开 员工基本信息表.xlsx 和 员工绩效表.xlsx,读取前5行数据"


生成了read_excel.py文件,仔细看看用到了哪些函数,确认输出结果是否符合预期;

import pandas as pd
# 读取员工基本信息表的前5行
def read_employee_info():
    try:
        df = pd.read_excel('员工基本信息表.xlsx', nrows=5)
        print("员工基本信息表的前5行数据:")
        print(df)
    except Exception as e:
        print(f"读取员工基本信息表时出错: {e}")
# 读取员工绩效表的前5行
def read_employee_performance():
    try:
        df = pd.read_excel('员工绩效表.xlsx', nrows=5)
        print("员工绩效表的前5行数据:")
        print(df)
    except Exception as e:
        print(f"读取员工绩效表时出错: {e}")
if __name__ == "__main__":
    read_employee_info()
    read_employee_performance()


如果都没有问题,下达第二条指令:

“编写Python,在员工基本信息表.xlsx 的基础上,增加该员工 2024年第4季度的绩效,存到新的 .xlsx”

CodeBuddy的思考过程:


执行过程:


执行完毕后,生成了新的add_performance.py文件和员工信息及绩效表.xlsx文件

员工信息表的前后对比:


新生成的add_performance.py文件:

import pandas as pd
import numpy as np
# 读取员工基本信息表
def read_employee_info():
    try:
        df = pd.read_excel('员工基本信息表.xlsx')
        print("员工基本信息表读取成功!")
        return df
    except Exception as e:
        print(f"读取员工基本信息表时出错: {e}")
        return None
# 添加2024年第4季度绩效数据
def add_performance_data(df):
    if df is not None:
        # 假设绩效数据为随机生成(范围:1.0-5.0)
        np.random.seed(42)  # 确保结果可复现
        df['2024年第4季度绩效'] = np.random.uniform(1.0, 5.0, size=len(df)).round(2)
        print("绩效数据添加完成!")
        return df
    else:
        print("无法添加绩效数据:员工信息为空!")
        return None
# 保存到新文件
def save_to_new_file(df):
    if df is not None:
        new_file = '员工信息及绩效表.xlsx'
        df.to_excel(new_file, index=False)
        print(f"数据已保存到 {new_file}")
    else:
        print("无法保存:数据为空!")
if __name__ == "__main__":
    employee_df = read_employee_info()
    employee_with_performance = add_performance_data(employee_df)
    save_to_new_file(employee_with_performance)

文内涉及到numpy的一些知识点,可以先行了解,自我扩展,举一反三,查漏补缺,后续将会结合案例详细讲解!

相关文章
|
22天前
|
存储 机器学习/深度学习 人工智能
构建AI智能体:三、Prompt提示词工程:几句话让AI秒懂你心
本文深入浅出地讲解Prompt原理及其与大模型的关系,系统介绍Prompt的核心要素、编写原则与应用场景,帮助用户通过精准指令提升AI交互效率,释放大模型潜能。
298 5
|
23天前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
402 6
|
24天前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
756 16
构建AI智能体:一、初识AI大模型与API调用
|
19天前
|
人工智能 自然语言处理 前端开发
构建AI智能体:六、体验Trae指定Qwen-Turbo模型自动生成问答系统
本文介绍如何使用字节跳动的AI编程工具Trae与阿里通义千问Qwen-Turbo模型,快速生成一个智能问答系统。通过图文结合方式,演示从环境搭建、指令生成到界面优化的全过程,涵盖前后端代码自动生成、模型调用封装及交互优化技巧,展现AI辅助开发的高效与趣味,助力开发者提升生产力。
381 12
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:十三、大数据下的“搭积木”:N-Gram 如何实现更智能的语义搜索
N-gram是一种基于上下文的统计语言模型,通过前N-1个词预测当前词的概率,广泛应用于文本生成、输入法预测、语音识别等领域,具有简单高效、可解释性强的优点,是自然语言处理的基础技术之一。
149 10
|
19天前
|
人工智能
实训Agent创客:一键生成电商场景Agent
在阿里云百炼一键生成电商场景Agent,轻松帮您搞定商品展示图片、视频。快来参与活动任务吧!
256 2
|
20天前
|
设计模式 消息中间件 前端开发
Java 设计模式之中介者模式:解耦复杂交互的架构艺术(含 UML 图解)
中介者模式通过引入协调者解耦多个对象间的复杂交互,将网状依赖转化为星型结构。适用于聊天室、GUI事件系统等场景,提升可维护性与扩展性,但需防中介者过度膨胀。
219 3
|
15天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:十、开箱即见 Gradio:大模型的“魔法画布”,让每一个想法清晰可见
Gradio是一个快速构建机器学习演示界面的Python库,能够将需要数天开发工作的模型展示缩短为几分钟的脚本编写。它通过简单的Python代码即可生成完整的Web应用界面,支持文本、图像、音频等多种交互组件,适用于模型展示、教学演示和原型测试等场景。文章详细介绍了Gradio的核心功能、基础语法和组件使用方法,并通过情感分析和聊天机器人两个实际案例展示了如何快速部署AI模型交互界面。Gradio大幅降低了将模型转化为可交互应用的门槛,使开发者能更专注于模型本身而非界面开发。
280 7

热门文章

最新文章