深入解析Python的Pandas库:数据分析的利器(二)

这里写目录标题

在数据分析和处理领域,Python的Pandas库是不可或缺的工具。它提供了高效、灵活的数据结构和数据处理工具,极大地方便了数据清洗、探索、建模等任务。本文将通过系统介绍Pandas库的核心功能,帮助开发者从初步数据理解到深入数据分析,全面掌握Pandas的使用技巧。

一、数据的初步了解与操作

在实际数据分析中,首先需要对数据有一个大致的了解。这包括查看数据的基本结构、数据类型、行列分布以及基本统计信息等。Pandas为此提供了一系列简单易用的工具。

1.使用 head() 和 tail() 方法查看数据

当数据集较大时,我们通常想先查看前几行或后几行的数据,以便快速了解每列的数据类型和大致分布。Pandas中的head()和tail()方法可以分别返回数据表的前n行或后n行记录,默认情况下n为5。

python 复制代码
import pandas as pd

# 示例数据
data = {
    '姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十'],
    '年龄': [23, 22, 21, 24, 22, 23, 24, 25],
    '性别': ['男', '男', '女', '女', '男', '女', '女', '男'],
    '成绩': [85, 90, 78, 88, 92, 70, 89, 91]
}

df = pd.DataFrame(data)

# 查看前几行数据
print(df.head())  # 默认显示前5行
print(df.head(3))  # 显示前3行

# 查看最后几行数据
print(df.tail())  # 默认显示后5行
print(df.tail(2))  # 显示最后2行

2. 使用 info() 方法查看数据类型和基本信息

info()方法是快速了解数据表中每列的类型和非空数据量的常用方法。它可以帮助我们判断数据类型是否正确,例如字符型、数值型、布尔型等,还能帮助我们快速发现缺失值。

python 复制代码
# 查看数据表的结构信息
df.info()

3.使用 shape 属性查看数据表的大小

shape属性返回数据表的行数和列数。它以元组的形式表示,其中第一个值为行数,第二个值为列数。这是了解数据表大小最直接的方法。

python 复制代码
# 查看数据表的行数和列数
print("数据表大小:", df.shape)

4. 使用 describe() 方法获取数值统计信息

describe()方法用于快速了解数值型数据的分布情况。它返回的数据包括均值、标准差、最小值、最大值、四分位数等,对于探索性数据分析非常有帮助。

python 复制代码
# 获取数值型数据的描述性统计信息
print(df.describe())

二、列操作

在数据处理中,列操作是非常常见的需求。Pandas提供了强大的列管理功能,包括重命名、删除、选择和新增列等。

1.修改列名

可以通过columns属性直接修改列名,或者使用rename()方法进行更加灵活的重命名。

python 复制代码
# 修改列名
df.columns = ['Name', 'Age', 'Gender', 'Score']
print(df)

# 使用 rename() 方法进行重命名
df.rename(columns={'Name': '姓名', 'Age': '年龄'}, inplace=True)
print(df)

2.删除列

使用drop()方法可以删除指定的列。inplace=False表示不修改原数据,而是返回一个新的数据框。

python 复制代码
# 删除列
df.drop(columns=['性别'], inplace=False)

3.获取单列或多列数据

可以通过直接访问列名或使用双重方括号的方式获取单列或多列数据

python 复制代码
# 获取单列数据
print(df['年龄'])

# 获取多列数据
print(df[['姓名', '成绩']])

4.增加新列

通过直接赋值的方式可以为数据表增加新列。新列的数据可以是标量、列表、Series或者通过表达式计算得出。

python 复制代码
# 增加一个常量列
df['新列1'] = 1

# 增加一个基于已有列计算的新列
df['成绩提升'] = df['成绩'] + 5

print(df)

5.在指定位置插入新列

使用insert()方法可以在数据表的指定位置插入新列。

python 复制代码
# 在第二列位置插入新列
df.insert(1, '班级', ['A班', 'B班', 'A班', 'B班', 'A班', 'B班', 'A班', 'B班'])
print(df)

三、数据类型转换

在数据分析过程中,可能需要将某些列转换为不同的数据类型。Pandas提供了多种方法来完成类型转换,例如astype()、pd.to_datetime()、pd.to_numeric()等。

1.使用 astype() 方法进行类型转换

astype()方法可以将指定列转换为目标数据类型,如字符串、整数、浮点数等。

python 复制代码
# 将"年龄"列转换为浮点数类型
df['年龄'] = df['年龄'].astype(float)
print(df.dtypes)

2.使用专用方法进行类型转换

Pandas提供了一些专用的方法用于转换日期时间、分类变量等特殊类型。

python 复制代码
# 将字符串转换为日期类型
df['日期'] = pd.to_datetime(['2023-08-01', '2023-08-02', '2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06', '2023-08-07', '2023-08-08'])
print(df)

# 将数值转换为分类类型
df['班级'] = df['班级'].astype('category')
print(df.dtypes)

四、索引的操作与管理

索引在Pandas中扮演着非常重要的角色,不仅用于标识行,还用于数据的快速定位、分组等操作。Pandas支持多种类型的索引,包括整数索引、标签索引、多级索引等。

1. 设置索引

可以通过set_index()方法将某列设置为索引。

python 复制代码
# 将"姓名"列设置为索引
df.set_index('姓名', inplace=True)
print(df)

2.重置索引

使用reset_index()方法可以将索引恢复为普通列。

python 复制代码
# 重置索引
df.reset_index(inplace=True)
print(df)

3.更新索引

通过reindex()方法可以添加、删除或重新排列索引。

python 复制代码
# 重新排列索引,并填充缺失值
df = df.reindex([0, 1, 2, 3, 5, 6, 7])
print(df)

五、通过函数计算变量的值

Pandas的apply()方法是一个非常强大的工具,它允许我们在DataFrame或Series上应用自定义函数,从而实现数据的灵活处理。apply()不仅支持逐行或逐列地应用函数,还可以实现复杂的计算逻辑。

1.apply() 方法的使用

apply()方法允许我们将自定义函数应用于DataFrame的行或列。参数axis用于指定应用的方向:

  • axis=0:针对每列应用函数。
  • axis=1:针对每行应用函数。
    以下是一个简单的例子,通过自定义函数计算一个新变量:
python 复制代码
import pandas as pd

# 创建一个示例DataFrame
data = {
    '姓名': ['张三', '李四', '王五'],
    '体重': [70, 65, 80]
}
df = pd.DataFrame(data)

# 自定义函数,获取体重列的数据
def get_value(row):
    return row['体重']

# 使用 apply 计算新列
df['a'] = df.apply(get_value, axis=1)
print(df.head())

2.apply() 方法的其他应用形式

除了通过行列遍历,我们还可以直接对某列数据使用apply(),例如对数据进行数学计算或使用外部库如math或numpy进行复杂运算。

python 复制代码
import math
import numpy as np

# 对体重列应用数学函数计算
df['n5'] = df['体重'].apply(math.sqrt)  # 使用 math 库计算平方根
df['n7'] = df['体重'].apply(np.sqrt)  # 使用 numpy 库计算平方根

print(df)

3.使用自定义函数处理数据

apply()还可以配合自定义函数,对每个数据进行操作。例如,我们可以截取字符串的第一个字符:

python 复制代码
# 自定义函数,截取第一个字符
def get_first(tmp):
    return tmp[:1]

df['n6'] = df['姓名'].apply(get_first)
print(df)

六、总结

本文通过多个方面深入探讨了Pandas库的基本功能与常见操作。从数据的初步了解、列的操作到索引的管理,Pandas提供了全方位的工具支持,极大地提升了数据处理的效率。通过掌握这些方法,开发者可以更加高效地处理复杂的数据任务。Pandas在未来的数据分析、科学计算和人工智能领域将继续发挥重要作用。
上期回归:
深入理解Python数据分析利器------Pandas库详解(一)

后续会持续更新哟~

敬请期待~

相关推荐
爱技术的小伙子24 分钟前
【30天玩转python】面向对象编程基础
开发语言·python
theoxiong34 分钟前
Python的Scapy库详解
开发语言·python·网络协议·tcp/ip·http·信息与通信·scapy
hsg771 小时前
ArcGIS Pro 克隆clone python环境报错问题处理方法
开发语言·python·arcgis
Flying_Fish_roe1 小时前
Reactive 编程-Vert.x
开发语言·python
四代机您发多少1 小时前
入门pytorch
人工智能·pytorch·python
Rin__________2 小时前
Python计算机视觉 第8章-图像内容分类
python·计算机视觉·分类
西猫雷婶2 小时前
python画图|3D直方图基础教程
开发语言·python
守望↪星空2 小时前
画图方法总结
python
码农超哥同学2 小时前
Python知识点:如何使用Python进行Excel文件操作(OpenPyXL、Pandas)
python·面试·excel·pandas·编程
我可以将你更新哟2 小时前
pandas中loc和iloc的区别
pandas