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

相关推荐
稚辉君.MCA_P8_Java5 分钟前
Gemini永久会员 containerd部署java项目 kubernetes集群
后端·spring cloud·云原生·容器·kubernetes
yihuiComeOn31 分钟前
[源码系列:手写Spring] AOP第二节:JDK动态代理 - 当AOP遇见动态代理的浪漫邂逅
java·后端·spring
散峰而望1 小时前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
e***71671 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
程序猿小蒜2 小时前
基于springboot的的学生干部管理系统开发与设计
java·前端·spring boot·后端·spring
q***56382 小时前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
菜鸟‍2 小时前
【后端学习】MySQL数据库
数据库·后端·学习·mysql
Codebee3 小时前
30 分钟落地全栈交互:OneCode CLI+SVG 排课表实战
后端
TechTrek3 小时前
Spring Boot 4.0正式发布了
java·spring boot·后端·spring boot 4.0
WYiQIU4 小时前
面了一次字节前端岗,我才知道何为“造火箭”的极致!
前端·javascript·vue.js·react.js·面试