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 来处理和分析数据。记住,在实际工作中,不断优化你的代码和数据处理流程是非常重要的。

目录
相关文章
|
5月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
698 7
|
5月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
434 0
|
6月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
508 1
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
616 0
|
5月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
1111 1
Python API接口实战指南:从入门到精通
|
5月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1009 1
|
6月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
378 5
|
6月前
|
数据采集 网络协议 API
协程+连接池:高并发Python爬虫的底层优化逻辑
协程+连接池:高并发Python爬虫的底层优化逻辑
|
6月前
|
算法 定位技术 调度
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)
基于蚂蚁优化算法的柔性车间调度研究(Python代码实现)
299 0
|
6月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
487 0

推荐镜像

更多