Python Pandas入门:行与列快速上手与优化技巧

简介: Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。

Pandas是Python中一个强大的数据分析库,其灵活高效的数据处理能力深受数据科学家和数据分析师的喜爱。在Pandas中,数据通常以DataFrame(二维表格)和Series(一维序列)的形式存储和操作。本文旨在帮助初学者快速上手Pandas,掌握DataFrame中行与列的基本操作,并提供一些优化技巧,以便在实际工作中更高效地使用Pandas。站大爷代理IP工具的验证功能介绍 (11).png

一、Pandas安装与导入
在使用Pandas之前,需要先确保已安装该库。可以使用pip命令进行安装:

pip install pandas

安装完成后,导入Pandas库:

import pandas as pd

二、创建DataFrame
DataFrame是Pandas中最常用的数据结构,它类似于Excel中的表格,包含行和列。以下是一些创建DataFrame的常见方法:

从字典创建:

data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)

输出结果:

Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago

从列表的列表创建:

data = [
['Alice', 25, 'New York'],
['Bob', 30, 'Los Angeles'],
['Charlie', 35, 'Chicago']
]
columns = ['Name', 'Age', 'City']
df = pd.DataFrame(data, columns=columns)
print(df)
输出结果同上。

从CSV文件创建:

df = pd.read_csv('data.csv')
print(df)

注意:这里假设data.csv文件与Python脚本在同一目录下,且文件内容格式正确。

三、行与列的基本操作

  1. 选择行与列
    选择单列:

print(df['Name'])
输出结果:

0 Alice
1 Bob
2 Charlie
Name: Name, dtype: object
选择多列:

print(df[['Name', 'City']])
输出结果:

Name City
0 Alice New York
1 Bob Los Angeles
2 Charlie Chicago
选择单行:

print(df.loc[0])

输出结果:

Name Alice
Age 25
City New York
Name: 0, dtype: object
选择多行:

print(df.loc[[0, 2]])
输出结果:

Name Age City
0 Alice 25 New York
2 Charlie 35 Chicago
按条件选择行:

print(df[df['Age'] > 30])
输出结果:

Name Age City
2 Charlie 35 Chicago

  1. 添加行与列
    添加单列:

df['Salary'] = [70000, 80000, 90000]
print(df)

输出结果:

Name Age City Salary
0 Alice 25 New York 70000
1 Bob 30 Los Angeles 80000
2 Charlie 35 Chicago 90000
添加多列:

new_columns = {'Occupation': ['Engineer', 'Doctor', 'Lawyer'], 'Experience': [5, 8, 10]}
df = df.assign(**new_columns)
print(df)
输出结果:

   Name  Age         City  Salary Occupation  Experience

0 Alice 25 New York 70000 Engineer 5
1 Bob 30 Los Angeles 80000 Doctor 8
2 Charlie 35 Chicago 90000 Lawyer 10

添加单行:

new_row = {'Name': 'David', 'Age': 40, 'City': 'Houston', 'Salary': 100000, 'Occupation': 'Architect', 'Experience': 12}
df = df.append(new_row, ignore_index=True)
print(df)

输出结果:

   Name  Age       City  Salary Occupation  Experience

0 Alice 25 New York 70000 Engineer 5
1 Bob 30 Los Angeles 80000 Doctor 8
2 Charlie 35 Chicago 90000 Lawyer 10
3 David 40 Houston 100000 Architect 12

  1. 删除行与列
    删除单列:

df = df.drop(columns=['Salary'])
print(df)
输出结果:

Name Age City Occupation Experience
0 Alice 25 New York Engineer 5
1 Bob 30 Los Angeles Doctor 8
2 Charlie 35 Chicago Lawyer 10
3 David 40 Houston Architect 12

删除多列:

df = df.drop(columns=['Occupation', 'Experience'])
print(df)

输出结果:

  Name  Age       City

0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
3 David 40 Houston

删除单行:

df = df.drop(index=0)
print(df)
输出结果:

Name      Age       City

1 Bob 30 Los Angeles
2 Charlie 35 Chicago
3 David 40 Houston

删除多行:

df = df.drop(index=[1, 3])
print(df)

输出结果:

  Name  Age    City

2 Charlie 35 Chicago
四、优化技巧

  1. 使用链式操作
    Pandas支持链式操作,即将多个操作组合在一起,提高代码的可读性和效率。例如:

df = (
pd.read_csv('data.csv')
.drop(columns=['UnneededColumn1', 'UnneededColumn2'])
.rename(columns={'OldColumnName': 'NewColumnName'})
.query('Age > 30')
)
print(df)

  1. 避免使用循环
    Pandas的内置函数通常比Python原生的循环更高效。尽量避免在DataFrame上使用循环操作,而是利用Pandas的向量化操作。例如,计算每行的和:

不推荐的方式(低效)

for index, row in df.iterrows():
sum_row = row['Column1'] + row['Column2'] + row['Column3']

# do something with sum_row

推荐的方式(高效)

df['Sum'] = df[['Column1', 'Column2', 'Column3']].sum(axis=1)

  1. 使用loc和iloc进行精确选择
    loc基于标签选择数据,而iloc基于整数位置选择数据。在需要精确选择数据时,使用这两个函数可以提高代码的清晰度和性能。例如:

选择年龄大于30且职业为Doctor的行

df_filtered = df.loc[(df['Age'] > 30) & (df['Occupation'] == 'Doctor')]

选择前两行

df_first_two = df.iloc[:2]

  1. 使用apply函数进行自定义操作
    apply函数允许对DataFrame的列或行应用自定义函数。这在处理复杂逻辑时非常有用。例如,计算每行的平均年龄(假设有多列年龄数据):

def calculate_average_age(row):
age_columns = ['Age1', 'Age2', 'Age3'] # 假设这些列存在
return row[age_columns].mean()

df['AverageAge'] = df.apply(calculate_average_age,axis=1)
print(df)

在这个例子中,calculate_average_age 函数计算了每行中指定年龄列的平均值,并将结果存储在新的列 AverageAge 中。axis=1 参数指定函数应用于行而不是列。

  1. 使用向量化字符串操作
    Pandas 提供了许多针对字符串的向量化操作,这些操作通常比使用 Python 的循环或列表推导式更快。例如,要将所有城市名称转换为大写:

df['City'] = df['City'].str.upper()
print(df)

  1. 使用合适的数据类型
    确保 DataFrame 中的列使用合适的数据类型,因为数据类型会影响性能。例如,将整数列存储为整数类型而不是浮点数或对象类型。可以使用 astype 方法转换数据类型:

df['Age'] = df['Age'].astype(int)
print(df.dtypes)

  1. 使用 Dask 或 Modin 进行大规模数据处理
    对于非常大的数据集,Pandas 可能会变得缓慢或内存不足。在这种情况下,可以考虑使用 Dask 或 Modin,这两个库提供了与 Pandas 兼容的 API,但能够处理更大规模的数据集。

  2. 优化读取和写入文件
    当从文件读取数据或写入数据时,可以通过调整参数来优化性能。例如,使用 read_csv 的 nrows 参数限制读取的行数,或使用 chunksize 参数分块读取大文件。

分块读取大文件

chunks = pd.read_csv('large_file.csv', chunksize=10000)
for chunk in chunks:

 # 处理每个块
 pass
  1. 利用索引
    Pandas 的索引不仅用于快速访问数据,还可以加速数据操作。确保为经常用作过滤条件的列设置索引,或者使用 set_index 方法将列转换为索引。

df.set_index('Name', inplace=True)
print(df)

  1. 使用查询(query)方法
    query 方法允许使用字符串表达式来查询数据,这可以提高代码的可读性。例如:

df_filtered = df.query('Age > 30 and Occupation == "Doctor"')
print(df_filtered)

总结:
Pandas 是一个功能强大的数据分析库,提供了丰富的工具和函数来处理数据。通过掌握行与列的基本操作以及上述优化技巧,你可以更高效地使用 Pandas 来处理和分析数据。记住,在实际工作中,不断优化你的代码和数据处理流程是非常重要的。

目录
相关文章
|
6天前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
127567 10
|
14天前
|
弹性计算 人工智能 安全
对话 | ECS如何构筑企业上云的第一道安全防线
随着中小企业加速上云,数据泄露、网络攻击等安全威胁日益严重。阿里云推出深度访谈栏目,汇聚产品技术专家,探讨云上安全问题及应对策略。首期节目聚焦ECS安全性,提出三道防线:数据安全、网络安全和身份认证与权限管理,确保用户在云端的数据主权和业务稳定。此外,阿里云还推出了“ECS 99套餐”,以高性价比提供全面的安全保障,帮助中小企业安全上云。
201925 14
对话 | ECS如何构筑企业上云的第一道安全防线
|
3天前
|
供应链 监控 安全
|
6天前
|
SQL 安全 前端开发
预编译为什么能防止SQL注入?
SQL注入是Web应用中常见的安全威胁,攻击者通过构造恶意输入执行未授权的SQL命令。预编译语句(Prepared Statements)是一种有效防御手段,它将SQL代码与数据分离,确保用户输入不会被解释为SQL代码的一部分。本文详细介绍了SQL注入的危害、预编译语句的工作机制,并结合实际案例和多语言代码示例,展示了如何使用预编译语句防止SQL注入,强调了其在提升安全性和性能方面的重要性。
|
9天前
|
搜索推荐 物联网 PyTorch
Qwen2.5-7B-Instruct Lora 微调
本教程介绍如何基于Transformers和PEFT框架对Qwen2.5-7B-Instruct模型进行LoRA微调。
417 34
Qwen2.5-7B-Instruct Lora 微调
|
1月前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9940 29
|
3天前
|
机器学习/深度学习 存储 人工智能
【科普向】我们所说的AI模型训练到底在训练什么?
人工智能(AI)模型训练类似于厨师通过反复实践来掌握烹饪技巧。它通过大量数据输入,自动优化内部参数(如神经网络中的权重和偏置),以最小化预测误差或损失函数,使模型在面对新数据时更加准确。训练过程包括前向传播、计算损失、反向传播和更新权重等步骤,最终生成权重文件保存模型参数,用于后续的应用和部署。理解生物神经网络的工作原理为人工神经网络的设计提供了灵感,后者广泛应用于图像识别、自然语言处理等领域。
|
2天前
|
人工智能 算法 搜索推荐
阿里云百炼xWaytoAGI共学课开课:手把手学AI,大咖带你从零搭建AI应用
阿里云百炼xWaytoAGI共学课开课啦。大咖带你从零搭建AI应用,玩转阿里云百炼大模型平台。3天课程,涵盖企业级文本知识库案例、多模态交互应用实操等,适合有开发经验的企业或独立开发者。直播时间:2025年1月7日-9日 20:00,地点:阿里云/WaytoAGI微信视频号。参与课程可赢取定制保温杯、雨伞及磁吸充电宝等奖品。欢迎加入钉钉共学群(群号:101765012406),与百万开发者共学、共享、共实践!
|
15天前
|
机器学习/深度学习 人工智能 安全
通义视觉推理大模型QVQ-72B-preview重磅上线
Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍存在一些局限性,仍在学习和完善中。

热门文章

最新文章

下一篇
开通oss服务