import pandas as pd

一、创建数据:从“空”到“有”的开始

pandas 最核心的数据结构是 Series(一维数据)和 DataFrame(二维表格数据,类似 Excel)。先从最简单的创建方式学起。

1. 创建 Series(一维数据)

Series 可以理解为带标签的“列表”,标签称为“索引”。
示例代码

# 用列表创建 Series(默认索引是 0,1,2...)
s = pd.Series([10, 20, 30, 40])
print(s)
# 输出:
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

# 自定义索引(比如用日期或字母)
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s)
# 输出:
# a    10
# b    20
# c    30
# dtype: int64

2. 创建 DataFrame(二维表格数据)

DataFrame 是最常用的结构,类似 Excel 表格,由多个 Series 组成(每列是一个 Series)。
示例代码

# 方法 1:用字典创建(键=列名,值=列数据)
data = {
    "姓名": ["小明", "小红", "小刚"],
    "年龄": [18, 19, 20],
    "成绩": [90, 85, 95]
}
df = pd.DataFrame(data)
print(df)
# 输出:
#   姓名  年龄  成绩
# 0  小明  18  90
# 1  小红  19  85
# 2  小刚  20  95

# 方法 2:用二维列表创建(需指定列名)
df = pd.DataFrame([
    ["小明", 18, 90],
    ["小红", 19, 85],
    ["小刚", 20, 95]
], columns=["姓名", "年龄", "成绩"])
print(df)  # 输出同上

二、查看数据:快速了解“表里有什么”

创建数据后,先通过基础方法查看数据的“外观”和“信息”,避免后续操作出错。

1. 查看数据前/后几行(快速预览)

  • head(n):查看前 n 行(默认 n=5)
  • tail(n):查看后 n 行(默认 n=5)

示例代码

# 查看前 2 行
print(df.head(2))
# 输出:
#   姓名  年龄  成绩
# 0  小明  18  90
# 1  小红  19  85

# 查看后 1 行
print(df.tail(1))
# 输出:
#   姓名  年龄  成绩
# 2  小刚  20  95

2. 查看数据统计信息

  • info():查看数据类型、非空值数量(快速检查数据是否有缺失)
  • describe():对数值列统计(计数、均值、标准差、最大/最小值等)
  • columns:查看列名
  • index:查看行索引

示例代码

# 查看数据基本信息(数据类型、非空值)
print(df.info())
# 输出:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype 
# ---  ------  --------------  ----- 
#  0   姓名      3 non-null      object
#  1   年龄      3 non-null      int64 
#  2   成绩      3 non-null      int64 
# dtypes: int64(2), object(1)
# memory usage: 200.0+ bytes

# 查看数值列统计描述(仅对数值列生效)
print(df.describe())
# 输出:
#        年龄         成绩
# count   3.000000   3.000000
# mean   19.000000  90.000000
# std     1.000000   2.581989
# min    18.000000  85.000000
# 25%    18.500000  87.500000
# 50%    19.000000  90.000000
# 75%    19.500000  92.500000
# max    20.000000  95.000000

# 查看列名和行索引
print("列名:", df.columns)  # 输出:列名: Index(['姓名', '年龄', '成绩'], dtype='object')
print("行索引:", df.index)  # 输出:行索引: RangeIndex(start=0, stop=3, step=1)

三、修改数据:让数据“为我所用”

掌握数据的“增删改查”,核心是定位数据并修改,以下是常用操作。

1. 修改单个/多个单元格的值

loc[行标签, 列名]iloc[行位置, 列位置] 定位后赋值。
- loc:通过标签定位(如行标签、列名)
- iloc:通过位置定位(从 0 开始的整数)

示例代码

# 修改第一行“年龄”列的值(用 loc 标签定位)
df.loc[0, "年龄"] = 17
print(df)
# 输出:
#   姓名  年龄  成绩
# 0  小明  17  90
# 1  小红  19  85
# 2  小刚  20  95

# 修改第三行“成绩”列的值(用 iloc 位置定位,行位置 2,列位置 2)
df.iloc[2, 2] = 96
print(df)
# 输出:
#   姓名  年龄  成绩
# 0  小明  17  90
# 1  小红  19  85
# 2  小刚  20  96

2. 新增列(添加新数据列)

直接赋值给新列名即可,支持基于现有列计算。

示例代码

# 新增“班级”列(直接赋值)
df["班级"] = "一班"
print(df)
# 输出:
#   姓名  年龄  成绩  班级
# 0  小明  17  90  一班
# 1  小红  19  85  一班
# 2  小刚  20  96  一班

# 新增“总分”列(基于现有数值列计算)
df["总分"] = df["成绩"] + 10  # 假设满分 100 分,总分=成绩+10
print(df)
# 输出:
#   姓名  年龄  成绩  班级  总分
# 0  小明  17  90  一班  100
# 1  小红  19  85  一班   95
# 2  小刚  20  96  一班  106

3. 删除列(删除不需要的列)

drop() 方法,axis=1 表示删除列,inplace=True 直接修改原数据。

示例代码

# 删除“总分”列(axis=1 表示列,inplace=True 直接修改原 df)
df.drop("总分", axis=1, inplace=True)
print(df)
# 输出:
#   姓名  年龄  成绩  班级
# 0  小明  17  90  一班
# 1  小红  19  85  一班
# 2  小刚  20  96  一班

4. 修改行/列索引(调整标签)

直接赋值给 indexcolumns,或用 rename() 重命名。

示例代码

# 修改行索引(原索引是 0,1,2 → 改为“row1”, “row2”, “row3”)
df.index = ["row1", "row2", "row3"]
print(df)
# 输出:
#      姓名  年龄  成绩  班级
# row1  小明  17  90  一班
# row2  小红  19  85  一班
# row3  小刚  20  96  一班

# 重命名列名(用 rename 方法,inplace=True 直接修改)
df.rename(columns={"班级": "班级名称"}, inplace=True)
print(df)
# 输出:
#      姓名  年龄  成绩  班级名称
# row1  小明  17  90  一班
# row2  小红  19  85  一班
# row3  小刚  20  96  一班

总结

通过本文,我们学习了 pandas 数据处理的基础操作:
- 创建数据:用 SeriesDataFrame 构建一维/二维数据
- 查看数据:通过 head/tail/info/describe 快速了解数据特征
- 修改数据:用 loc/iloc 定位修改、新增/删除列、调整索引

pandas 操作的核心是“定位数据”,记住 loc(标签)和 iloc(位置)的区别,多练习就能熟练掌握!如果需要更复杂的操作(如分组、合并),可以后续深入学习。现在就动手尝试吧~

小夜