pandas 高级(一)

简介: 本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 高级,读本文之前建议先修:pandas 入门,后续还会发出一篇 pandas 进阶供读者进行进一步的学习了解。

前言

本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 高级,读本文之前建议先修:pandas 入门,后续还会发出一篇 pandas 进阶供读者进行进一步的学习了解。

1.数据集成

🚩pandas 提供了多种将 Series、DataFrame 对象组合在一起的功能

1.1 concat数据串联

🚩使用 concat 可以把数据进行合并,分别用 axis = 0 代表行合并,axis = 1 代表列合并

import pandas as pd
import numpy as np
# df1 看做是一班的考试成绩
df1 = pd.DataFrame(data = np.random.randint(0, 150, size = (10, 3)),# 计算机科目的考试成绩
                  index = list('ABCDEFGHIJ'),  # 行标签,用户
                  columns = ['Python', 'Tensorflow', 'Keras']) # 考试科目
# df2 看做是二班的考试成绩
df2 = pd.DataFrame(data = np.random.randint(0, 150, size = (10,3)),# 计算机科目的考试成绩
                  index = list('KLMNOPQRST'),# 行标签,用户
                  columns = ['Python', 'Tensorflow', 'Keras']) # 考试科目
# df3 新增两门考试科目(一班)
df3 = pd.DataFrame(data = np.random.randint(0, 150, size = (10,2)),
                  index = list('ABCDEFGHIJ'),
                  columns = ['PyTorch', 'Paddle'])
display(df1, df2, df3)
# 一班二班考试成绩合并
# axis = 0 表示进行(xing)行(hang)合并, 即行增加
display(pd.concat([df1, df2], axis = 0))
# 一班科目增加,合并科目
# axis = 1 表示进行列合并,即列增加
display(pd.concat([df1, df3], axis = 1))

19.png

1.2 插入

🚩使用 insert 可以在任意位置进行插入

import numpy as np
import pandas as pd
df = pd.DataFrame(data = np.random.randint(0, 151, size = (10, 3)),
                  index = list('ABCDEFGHIJ'),
                  columns = ['Python', 'Keras', 'Tensorflow'])
display(df) 
# 我们在 Keras 和 TensorFlow 中间插入一行 Math,分数均为150
df.insert(loc = 2, column = 'Math', value = 150)
# loc = 0 代表 Python, loc = 1 代表 Pytorch,以此类推
# 在 Python 后面插入一列 English
'''
获取列索引
df.columns 运行结果:Index(['Python', 'Pytorch', 'Math', 'Keras', 'Tensorflow'], 
          dtype='object')
把列索引转换为列表
list(df.columns) 运行结果:['Python', 'Pytorch', 'Math', 'Keras', 'Tensorflow']
调用index函数,获取列表中特定字段的位置
list(df.columns).index('Python') 运行结果:0
'''
# +1 表示在该位置后
index = list(df.columns).index('Python') + 1
df.insert(loc = index, column = 'English', value = np.random.randint(0, 151, size = 10))
display(df)

20.png

1.3 Join SQL风格合并

🚩数据集的合并(merge)或连接(join)运算是通过一个或者多个键将数据链接起来的。这些运算是关系型数据库的核心操作。pandas的merge函数是数据集进行join运算的主要切入点。

先来创建数据:

import pandas as pd
import numpy as np
# 记录的是name和weight
df1 = pd.DataFrame(data = {'name':['辰chen', '娇妹儿', '枭哥', '晶姐'],
                           'weight':[65, 60, 70, 50]})
# 记录的是name和height
df2 = pd.DataFrame(data = {'name':['辰chen', '娇妹儿', '枭哥', '黑猫警长'],
                           'height':[176, 184, 178, 166]})
# 记录的是名字和height
df3 = pd.DataFrame(data = {'名字':['辰chen', '娇妹儿', '枭哥', '黑猫警长'],
                           'height':[176, 184, 178, 166]})
display(df1, df2, df3)

21.png

利用 merge 对数据进行合并:

# df1, df2 进行合并
display(pd.merge(df1, df2)) # merge:根据共同的属性进行合并
# 共同的属性是name,共同拥有的是:辰chen, 娇妹儿, 枭哥

image.png

df1 和 df3 是不能直接进行合并的:

# df1, df3 进行合并
display(pd.merge(df1, df3))

image.png

当然啦,我们 pandas 是十分强大滴,按照如下代码可以进行合并:

# df1, df3 进行合并
# 指定了合并时, 根据哪一列进行合并
display(pd.merge(df1, df3, left_on = 'name', right_on = '名字'))

image.png

创建 10 名同学,计算每个人的平均分,并合并:

创建数据:

df4 = pd.DataFrame(data = np.random.randint(0, 151, size = (10, 3)),
                   index = list('ABCDEFHIJK'),
                   columns = ['Python', 'Keras', 'Tensorflow'])
display(df4)

image.png

计算平均分:

df4.mean()

image.png

我们要计算的不是列的平均分,而是每位同学的平均分:axis = 1

# 每个人的各科平均分, Series
df4.mean(axis = 1)

image.png

数据看起来不舒服,我们可以使用之前讲过的 round(1) 去保留一位小数:

# 每个人的各科平均分, Series
df4.mean(axis = 1).round(1)

image.png

看着是不是不是很舒服?我们可以把它变成 DataFrame

# 每个人的各科平均分, Series
t = df4.mean(axis = 1).round(1)
# 转为 DataFrame
df5 = pd.DataFrame(t, columns = ['平均分'])
df5

image.png

将 df4 和 df5 使用 merge 进行合并

# 将 df4 和 df5 使用 merge 进行合并
# df4 和 df5 没有共同的一列属性值相同,担有相同的行索引
pd.merge(df4, df5, left_index = True,   # 左边使用行索引
                   right_index = True)  # 右边使用行索引

image.png

上述代码同样可以用 concat 和 insert 实现:

pd.concat([df4, df5], axis = 1)

image.png

df4.insert(loc = 3, column = '平均分', value = df5)
df4

image.png


目录
相关文章
|
索引 Python
Pandas 高级教程——高级时间序列分析
Pandas 高级教程——高级时间序列分析
589 4
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
【5月更文挑战第19天】在 Python 数据分析中,pandas DataFrame 是核心工具。本文介绍了几个高级技巧:1) 横向合并 DataFrame;2) 数据分组与聚合;3) 处理缺失值;4) 数据重塑;5) 条件筛选;6) 使用函数处理数据。掌握这些技巧能提升数据处理效率和分析深度,助你更好地发掘数据价值。
151 1
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
1348 3
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
168 0
|
数据采集 机器学习/深度学习 数据处理
数据科学家的秘密武器:Pandas与NumPy高级应用实战指南
【7月更文挑战第14天】Pandas与NumPy在数据科学中扮演关键角色。Pandas的DataFrame和Series提供高效数据处理,如数据清洗、转换,而NumPy则以ndarray为基础进行数值计算和矩阵操作。两者结合,从数据预处理到数值分析,形成强大工具组合。示例展示了填充缺失值、类型转换、矩阵乘法、标准化等操作,体现其在实际项目中的协同效用。掌握这两者,能提升数据科学家的效能和分析深度。**
194 0
|
数据处理 Python
数据科学进阶之路:Pandas与NumPy高级操作详解与实战演练
【7月更文挑战第13天】探索数据科学:Pandas与NumPy提升效率的高级技巧** - Pandas的`query`, `loc`和`groupby`用于复杂筛选和分组聚合,例如筛选2023年销售额超1000的记录并按类别计总销售额。 - NumPy的广播和向量化运算加速大规模数据处理,如快速计算两个大数组的元素级乘积。 - Pandas DataFrame基于NumPy,二者协同加速数据处理,如将DataFrame列转换为NumPy数组进行标准化再回写,避免链式赋值。 掌握这些高级操作,实现数据科学项目的效率飞跃。
181 0
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
149 0
|
数据采集 数据挖掘 数据处理
《Pandas 简易速速上手小册》第8章:Pandas 高级数据分析技巧(2024 最新版)
《Pandas 简易速速上手小册》第8章:Pandas 高级数据分析技巧(2024 最新版)
163 1
|
数据挖掘 数据处理 索引
Python 应知应会的Pandas高级操作
Python 应知应会的Pandas高级操作
215 0