看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)运营部拿到 8 月的渠道日报,缺失分布如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({
"渠道": ["抖音", "抖音", np.nan, "快手", "快手", "微信", "微信"],
"日期": pd.date_range("2024-08-01", periods=7, freq="D"),
"曝光量": [1e6, np.nan, np.nan, 8e5, 9e5, np.nan, 1.1e6],
"点击量": [50000, 45000, np.nan, np.nan, 48000, 42000, np.nan],
"GMV": [np.nan, 20000, np.nan, 15000, np.nan, 18000, 22000]
})
'''
渠道 日期 曝光量 点击量 GMV
0 抖音 2024-08-01 1000000.0 50000.0 NaN
1 抖音 2024-08-02 NaN 45000.0 20000.0
2 NaN 2024-08-03 NaN NaN NaN
3 快手 2024-08-04 800000.0 NaN 15000.0
4 快手 2024-08-05 900000.0 48000.0 NaN
5 微信 2024-08-06 NaN 42000.0 18000.0
6 微信 2024-08-07 1100000.0 NaN 22000.0
'''
用一行 dropna()
分别完成下列 3 小题并打印结果:
小题 | 丢弃规则 | 期望行数 |
---|---|---|
A | 仅丢弃整行全空 | 7 → 6 |
B | 只要曝光量或点击量任一列为 NaN 就丢弃 | 7 → 3 |
C | 至少 2 个非 NaN 才保留(thresh=2) | 7 → 5 |
代码如下:
# A: 仅丢弃全空行
print("A 全空行丢弃:\n", df.dropna(how='all'))
# B: 曝光量或点击量缺值就丢
print("B 曝光/点击缺值丢弃:\n", df.dropna(subset=['曝光量', '点击量']))
# C: 每行至少 2 个非缺失
print("C 阈值=2 保留:\n", df.dropna(thresh=2))
输出情况:
(完)
更新时间:2025-08-22 08:02:30 标签:pandas python dropna 删除 缺失值