返回首页

Roadmap
更新于 2026年10月27日 全文 384 字未阅读

第 1.3 节 常见问题#

这一节收集了初学者用 Pandas 时最常卡的 10 个问题。每个问题都给出直接答案,能跑代码的都附上完整示例。

使用方式: 不用通读。遇到问题时用 Ctrl+F 搜关键词,直接跳到对应那条。等你把 5 章都学完再回头看,你会发现里面好多问题现在已经有答案了。

本课程使用的 Pandas 版本是 '3.1.0'

准备一下数据,下面每题都会用到:

import pandas as pd

data = {
    "订单号":   [1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008],
    "下单日期": ["2024-01-05", "2024-01-08", "2024-01-12", "2024-02-03",
                 "2024-02-15", "2024-03-02", "2024-03-20", "2024-04-08"],
    "城市":     ["北京", "上海", "北京", "广州", "上海", "北京", "深圳", "广州"],
    "商品":     ["手机", "电脑", "耳机", "手机", "键盘", "显示器", "耳机", "手机"],
    "销量":     [2, 1, 3, 2, 5, 1, 4, 2],
    "单价":     [3999.0, 7999.0, 599.0, 3999.0, 299.0, 1299.0, 599.0, 3999.0],
    "金额":     [7998.0, 7999.0, 1797.0, 7998.0, 1495.0, 1299.0, 2396.0, 7998.0],
    "客户评分": [4.5, 4.0, 4.8, 3.9, 4.2, 4.6, 4.1, 4.9],
}

df = pd.DataFrame(data)

Q1:如何从字典、列表或 NumPy 数组创建 DataFrame?#

答案: 三种都传给 pd.DataFrame(),区别只在于「数据怎么排」。

字典——键是列名,值是这一列的数据:

df = pd.DataFrame({
    "城市": ["北京", "上海"],
    "销量": [2, 1],
})

列表——每一行是一个列表,用 columns= 指定列名:

df = pd.DataFrame([
    ["北京", 2],
    ["上海", 1],
], columns=["城市", "销量"])

字典的列表——每一行是一个字典,列名自动取所有键的并集:

df = pd.DataFrame([
    {"城市": "北京", "销量": 2},
    {"城市": "上海", "销量": 1},
])

NumPy 数组——必须自己给列名,否则是 0, 1, 2:

import numpy as np

df = pd.DataFrame(np.array([[1, 2], [3, 4]]), columns=["a", "b"])

一句话记忆: 数据是「一列一列」整理的 → 用字典;数据是「一行一行」记的 → 用列表或字典的列表。


Q2:如何查看 DataFrame 的行数、列数和整体形状?#

答案:

df.shape      # (8, 8)  整体形状,元组
df.shape[0]   # 8       行数
df.shape[1]   # 8       列数
len(df)       # 8       行数(对 DataFrame 而言)
df.size       # 64      总元素数 = 行数 × 列数

顺序别看反:shape 是「先行后列」,也就是「几行几列」,和数学里的矩阵一样。


Q3:如何获取 DataFrame 的所有列名?#

答案:

df.columns            # Index 对象,带一层壳
df.columns.tolist()   # 干净的 Python 列表,推荐

输出:

['订单号', '下单日期', '城市', '商品', '销量', '单价', '金额', '客户评分']

如果只是想在循环里用,df.columns 直接就够;如果要拿去做别的计算,tolist() 更顺手。


阅读 --