Pandas DataFrame 入门教程

Pandas 是 Python 中用于数据操作和分析的强大工具。以下教程将涵盖 DataFrame 的常用函数和用法,帮助你快速上手。

1. 创建 DataFrame

1.1 使用字典创建 DataFrame

python 复制代码
import pandas as pd

# 使用字典创建 DataFrame
data = {
    '姓名': ['John', 'Alice', 'Bob'],
    '年龄': [28, 24, 22],
    '城市': ['纽约', '旧金山', '洛杉矶']
}
df = pd.DataFrame(data)

print(df)

输出结果:

text 复制代码
   姓名  年龄     城市
0   John    28     纽约
1  Alice    24   旧金山
2    Bob    22   洛杉矶

1.2 使用列表创建 DataFrame

python 复制代码
# 使用列表创建 DataFrame
data_list = [
    ['John', 28, '纽约'],
    ['Alice', 24, '旧金山'],
    ['Bob', 22, '洛杉矶']
]
df_list = pd.DataFrame(data_list, columns=['姓名', '年龄', '城市'])

print(df_list)

输出结果与上述相同。

1.3 使用 NumPy 数组创建 DataFrame

python 复制代码
import numpy as np

# 使用 NumPy 数组创建 DataFrame
array = np.array([
    ['John', 28, '纽约'],
    ['Alice', 24, '旧金山'],
    ['Bob', 22, '洛杉矶']
])
df_array = pd.DataFrame(array, columns=['姓名', '年龄', '城市'])

print(df_array)

输出结果与上述相同。

2. 访问和操作数据

2.1 访问行和列

  • 访问行 :使用 .loc[] 或 .iloc[]。

    • .loc[] 根据标签访问。
    • .iloc[] 根据位置访问。
python 复制代码
# 访问第一行
print(df.loc[0])
# 访问第一列
print(df['姓名'])

2.2 添加和删除列

  • 添加列:直接赋值给新列名。
  • 删除列 :使用 .drop() 方法。
python 复制代码
# 添加新列
df['国家'] = '美国'

# 删除 '年龄' 列
df = df.drop('年龄', axis=1)

2.3 过滤数据

使用条件语句过滤数据。

python 复制代码
# 过滤年龄大于 25 的行(注意:此时年龄列已被删除)
# df['年龄'] = [28, 24, 22]  # 临时恢复年龄列以演示过滤
# filtered_df = df[df['年龄'] > 25]

3. 合并和连接 DataFrame

3.1 垂直合并

使用 .concat() 方法。

python 复制代码
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
combined_df = pd.concat([df1, df2])

print(combined_df)

输出结果:

css 复制代码
text
   A  B
0  1  3
1  2  4
0  5  7
1  6  8

3.2 基于共同列的合并

使用 .merge() 方法。

python 复制代码
df1 = pd.DataFrame({'ID': [1, 2], '姓名': ['John', 'Alice']})
df2 = pd.DataFrame({'ID': [1, 2], '年龄': [28, 24]})
merged_df = pd.merge(df1, df2, on='ID')

print(merged_df)

输出结果:

text 复制代码
   ID  姓名  年龄
0   1   John    28
1   2  Alice    24

4. 应用自定义函数

使用 .apply() 方法应用自定义函数。

python 复制代码
def triple_value(x):
    return x * 3

# 将 '年龄' 列的值乘以 3(注意:此时年龄列已被删除)
# df['年龄'] = [28, 24, 22]  # 临时恢复年龄列以演示
# df['三倍年龄'] = df['年龄'].apply(triple_value)

5. 分组和聚合

使用 .groupby() 方法分组数据,然后应用聚合函数。

python 复制代码
# 按 '城市' 分组,计算每组的平均年龄(注意:此时年龄列已被删除)
# df['年龄'] = [28, 24, 22]  # 临时恢复年龄列以演示
# grouped_df = df.groupby('城市')['年龄'].mean()

6. 处理缺失值

使用 .fillna() 或 .dropna() 方法处理缺失值。

python 复制代码
# 用平均值填充缺失值(注意:此时年龄列已被删除)
# df['年龄'] = [28, 24, None]  # 临时添加缺失值以演示
# df['年龄'].fillna(df['年龄'].mean(), inplace=True)

7. 数据转换

使用 .pivot_table() 或 .melt() 方法转换数据格式。

python 复制代码
# 将宽格式转换为长格式
df_long = pd.melt(df, id_vars=['姓名'], value_vars=['年龄', '城市'])
# 注意:此处需要恢复年龄列以演示

这些函数和用法为你提供了一个基础的框架,以便在 Pandas 中高效地处理和分析数据。

相关推荐
H_BB5 分钟前
面试笔记:数据加密和心跳机制
笔记·面试·职场和发展
系统集成-鹰翔7 分钟前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
j7~29 分钟前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象
dreams_dream1 小时前
项目想要推送多个平台仓库的方法
gitee·github
AI_Lab011 小时前
服务器管理工具要在服务器上装 Agent,安全吗?
服务器·安全·github
七牛云行业应用1 小时前
DeepSeek Harness 插件架构 vs MCP:Cordis 的「Everything is a Plugin」到底解决什么
ai·github·ai编程
软件技术NINI1 小时前
基于SpringBoot和Vue的摇滚乐鉴赏网站
vue.js·spring boot·后端·spring·html·毕业设计·毕设
Tsuki_tl1 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
后台模板学习2 小时前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
系统集成-鹰翔2 小时前
ERP对接升级提示数据库迁移失败:SQLite逐版本事务到底回滚到哪一步
javascript·数据库·经验分享·后端