You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas加载数据函数生成空DataFrame问题排查求助

我来帮你一步步排查为什么调用load_data后得到空DataFrame的问题,这是数据分析里很常见的小坑,咱们逐个击破:

常见原因及解决办法

1. 先确认文件路径和文件本身没问题

  • 首先你得验证CITY_DATA[city]指向的文件路径是正确的,比如打印出来看看:
    print(CITY_DATA['chicago'])  # 换成你实际传入的城市名
    
    看看路径是不是拼错了,比如少了文件夹名、文件名大小写不对(Windows系统不敏感,但Linux/macOS会区分)。
  • 然后手动打开对应的CSV文件,确认里面不是空的——要是文件本身只有表头或者完全没内容,加载出来的DataFrame肯定是空的。

2. 检查函数里的过滤逻辑(你的函数没实现这部分!)

你的函数定义里说要按月份和日期过滤,但函数体里完全没写这部分代码啊!如果之后你补了过滤逻辑,很可能是过滤条件写得太严格,把所有数据都筛掉了:

  • 比如数据里的月份是数字(1-12),但你传的是英文月份名(比如"january"),没做格式转换就直接过滤,自然匹配不到任何数据;
  • 星期几的参数格式不匹配,比如数据里是"Monday"(首字母大写),你传的是"monday"(全小写),或者你用错了列名(比如数据里叫day_of_week,你写成了day)。

临时测试方法:先把过滤逻辑注释掉,只保留加载数据的代码,看看能不能读到内容:

def load_data(city, month, day):
    """
    Loads data for the specified city and filters by month and day if applicable.
    Args:
        (str) city - name of the city to analyze
        (str) month - name of the month to filter by, or "all" to apply no month filter
        (str) day - name of the day of week to filter by, or "all" to apply no day filter
    """
    # 先只加载原始数据,跳过过滤
    df = pd.read_csv(CITY_DATA[city])
    print(df.head())  # 打印前5行看看有没有数据
    return df

如果这样能读到数据,再逐步加过滤逻辑,每加一步就打印一次数据,确认哪一步把数据筛没了。

3. 检查CSV读取的参数是否正确

有时候读取CSV时的小参数错误也会导致空DataFrame:

  • 分隔符不对:比如数据里用的是制表符\t,但你默认用了逗号sep=',',这会把整行当成一列,甚至读取失败;
  • 编码错误:如果文件是GBK编码,你用默认的UTF-8读取,可能会导致数据解析失败;
  • 表头问题:如果数据第一行不是表头,你需要指定header=None,不然会把第一行数据当成表头,后面的内容读不进去。

可以试试指定这些参数:

df = pd.read_csv(CITY_DATA[city], encoding='utf-8', sep=',')

4. 别忘了让函数返回DataFrame!

你的函数定义里没有return df语句啊!如果函数没返回数据,你调用的时候拿到的其实是None,打印出来自然是空(或者会报错)。一定要在函数最后加上return df。

内容的提问来源于stack exchange,提问作者Surohit Tandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:16:30