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

数据科学和机器学习的“看家兵器”——pandas模块 之五

目录

  4.5 pandas 高级数据处理与分析

  一、课程目标

  二、对数据表格进行处理

  (一)行列转置

  (二)将数据表转换为树形结构

  三、数据表的拼接

  (一)merge () 函数的运用

  (二)concat () 函数的运用

  (三)append () 函数的运用

  四、对数据表格的同级运算

  五、计算数据表格中数值的分布情况

  六、对数据表中的相关性进行计算

  七、对数据进行分类汇总

  八、创建数据透视表

  九、课程回顾和小结

  十、课后练习


 

  4.5 pandas 高级数据处理与分析

  一、课程目标

  本次课程主要围绕 pandas 的高级数据处理与分析功能展开,通过理论讲解和案例分析,让学员掌握数据转置、表格拼接、统计运算、相关性分析、分类汇总、数据透视表等高级操作技巧。学员学完本次课程后,能够熟练使用 pandas 进行复杂的数据处理和深度数据分析。

  二、对数据表格进行处理

  在数据分析过程中,我们经常需要对数据表格进行各种处理,包括行列转置和转换为树形结构。

  (一)行列转置

  行列转置是将数据表格的行和列互换位置。

import pandas as pd
import numpy as np# 创建示例数据
np.random.seed(42)
data = {'姓名': ['张三', '李四', '王五', '赵六'],'语文': [85, 90, 78, 88],'数学': [92, 87, 95, 80],'英语': [88, 91, 85, 92]
}
df = pd.DataFrame(data)
df = df.set_index('姓名')print("原始数据:")
print(df)# 行列转置
df_transposed = df.T
print("\n转置后的数据:")
print(df_transposed)# 恢复索引
df_transposed = df_transposed.reset_index()
df_transposed = df_transposed.rename(columns={'index': '科目'})
print("\n恢复索引后的数据:")
print(df_transposed)

  这个案例展示了如何使用T属性对数据表格进行行列转置,以及如何恢复索引并修改列名。

  (二)将数据表转换为树形结构

  将数据表转换为树形结构可以更直观地展示数据之间的层次关系。

# 创建树形结构数据
tree_data = {'id': [1, 2, 3, 4, 5, 6, 7],'parent_id': [None, 1, 1, 2, 2, 3, 3],'name': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],'value': [10, 20, 30, 40, 50, 60, 70]
}
df_tree = pd.DataFrame(tree_data)print("原始树形结构数据:")
print(df_tree)# 定义构建树形结构的函数
def build_tree(df, parent_id=None):tree = []children = df[df['parent_id'] == parent_id]for _, child in children.iterrows():node = {'id': child['id'],'name': child['name'],'value': child['value'],'children': build_tree(df, child['id'])}tree.append(node)return tree# 构建树形结构
tree = build_tree(df_tree)
print("\n转换后的树形结构:")
import json
print(json.dumps(tree, indent=2, ensure_ascii=False))

  这个案例展示了如何将数据表转换为树形结构。通过递归函数,可以将具有父子关系的数据转换为嵌套的字典列表形式,便于进行树形结构的展示和分析。

  三、数据表的拼接

  在数据分析过程中,我们经常需要将多个数据表拼接在一起。pandas 提供了多种拼接数据表的方法。

  (一)merge () 函数的运用

  merge()函数用于根据一个或多个键将不同 DataFrame 中的行连接起来。

# 创建示例数据
df1 = pd.DataFrame({'学号': [1001, 1002, 1003, 1004],'姓名': ['张三', '李四', '王五', '赵六'],'班级': ['一班', '二班', '一班', '二班']
})df2 = pd.DataFrame({'学号': [1001, 1002, 1003, 1005],'成绩': [85, 90, 78, 88]
})print("df1:")
print(df1)
print("\ndf2:")
print(df2)# 内连接
df_inner = pd.merge(df1, df2, on='学号', how='inner')
print("\n内连接结果:")
print(df_inner)# 左连接
df_left = pd.merge(df1, df2, on='学号', how='left')
print("\n左连接结果:")
print(df_left)# 右连接
df_right = pd.merge(df1, df2, on='学号
http://www.xdnf.cn/news/6353.html

相关文章:

  • AI实时对话的通信基础,WebRTC技术综合指南
  • 网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】
  • WebRTC技术下的EasyRTC音视频实时通话SDK,助力车载通信打造安全高效的智能出行体验
  • day 17 无监督学习之聚类算法
  • Swagger go中文版本手册
  • 虚拟Python 环境构建器virtualenv安装(macOS版)
  • Prometheus监控系统部署
  • AI 治理进行时:网信办审核加速,AI 合规刻不容缓
  • 2025.05.14华为机考笔试题-第二题-200分
  • C#语法基础
  • 第30节:现代CNN架构-轻量级架构EfficientNet
  • mysql:如何查询版本号与社区版/企业版
  • 算法分析:蛮力法
  • Redis--基础知识点--27--redis缓存分类树
  • 计算机视觉----基于锚点的车道线检测、从Line-CNN到CLRNet到CLRKDNet 本文所提算法Line-CNN 后续会更新以下全部算法
  • OneNote内容太多插入标记卡死的解决办法
  • 在Rocky Linux 9.5上部署MongoDB 8.0.9:从安装到认证的完整指南
  • 【HTML】个人博客页面
  • 为什么浏览器设置代理ip后不能上网?原因与对应解决方案
  • maven报错 You have to use a classifier to attach supplemental artifacts
  • XBL6501/02/03在POE设备上的应用方案
  • JSX语法介绍
  • python制造一个报错
  • 音频/AI/BLE/WIFI/玩具/商业等方向的论坛网站总结
  • 【有理数加法结构体】2022-1-3
  • 深度理解用于多智能体强化学习的单调价值函数分解QMIX算法:基于python从零实现
  • 【iOS安全】Dopamine越狱 iPhone X iOS 16.6 (20G75) | 解决Jailbreak failed with error
  • 【清华实验室】招聘机器人博后5名
  • 金融量化智能体,如何开发一个有效的策略?
  • mysql 字段类型解释