数据科学和机器学习的“看家兵器”——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='学号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

波涛浪子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值