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 中高效地处理和分析数据。

相关推荐
Swift社区2 小时前
面试高频图论题『墙与门』:Swift BFS 解法全流程拆解
面试·swift·宽度优先
-曾牛2 小时前
使用Spring AI集成Perplexity AI实现智能对话(详细配置指南)
java·人工智能·后端·spring·llm·大模型应用·springai
MyikJ3 小时前
Java面试:从Spring Boot到分布式系统的技术探讨
java·大数据·spring boot·面试·分布式系统
汪子熙4 小时前
Angular i18n 资源加载利器解析: i18n-http-backend
前端·javascript·面试
小奏技术4 小时前
Redis vs Valkey 深度对决:许可风波后,谁才是内存数据库的未来之选
后端
小兵张健4 小时前
用户、资金库表和架构设计
java·后端·架构
天天扭码4 小时前
在React项目中实现富文本编辑文章并发布
前端·react.js·github
AQin10124 小时前
外包那些事儿
面试
洛小豆4 小时前
ConcurrentHashMap.size() 为什么“不靠谱”?答案比你想的复杂
java·后端·面试
菠萝014 小时前
分布式CAP理论
数据库·c++·分布式·后端