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

open()与numpy.savetxt()函数异常行为的技术问询

解决Pandas/Numpy处理建筑用水数据并写入文件的异常问题

看起来你在处理加州建筑用水数据时,代码写到文件写入环节就中断了,而且大概率遇到了文件操作或统计量输出格式的问题。我来帮你梳理问题并给出修正后的完整代码:

先分析你代码里的几个潜在问题:

  • 文件操作未完成:你写到hw1.wri...就停了,应该是调用write()方法,而且写完后必须关闭文件(或者用with语句自动管理资源,更安全)
  • 众数输出格式不对:waterUsage.mode()返回的是Pandas Series对象,直接转字符串会带索引等额外信息,不是干净的众数值
  • 未处理空值:原始数据里的用水字段可能存在NaN,会影响统计结果的准确性
  • 文件路径风险:如果目标文件所在的目录不存在,直接写入会报错

修正后的完整代码:

import pandas as pd
import numpy as np

# 读取数据,若CSV有特殊字符可添加encoding参数适配
data = pd.read_csv(r'c:\Documents\DS\CAStateBuildingMetrics.csv')

# 提取用水数据并清理空值,保证统计结果准确
water_usage = data["Water Use (All Water Sources) (kgal)"].dropna()

# 提取部门和物业ID数据
dept_info = data[["Department Name", "Property Id"]]

# 计算统计量,优化众数的输出格式
mean_water = round(water_usage.mean(), 2)  # 保留两位小数提升可读性
median_water = round(water_usage.median(), 2)
# 处理无众数的情况(比如所有值唯一)
mode_water = water_usage.mode().iloc[0] if not water_usage.mode().empty else "无众数"

# 使用with语句自动管理文件资源,避免忘记关闭文件导致数据丢失
with open(r'c:\Documents\DS\testFile.txt', "a", encoding='utf-8') as hw1:
    # 写入统计信息
    hw1.write("建筑用水统计信息:\n")
    hw1.write(f"均值: {mean_water} kgal\n")
    hw1.write(f"中位数: {median_water} kgal\n")
    hw1.write(f"众数: {mode_water} kgal\n\n")
    
    # 写入部门和物业ID数据(示例写入前10行,可按需调整)
    hw1.write("部门与物业ID信息:\n")
    hw1.write(dept_info.head(10).to_string(index=False))  # 不写入索引,格式更整洁

关键改进说明:

  • 用with语句操作文件:无需手动调用close(),文件会在代码块结束后自动关闭,避免资源泄漏和数据丢失
  • 清理空值:用dropna()移除用水数据中的NaN,确保统计结果准确
  • 优化众数输出:通过iloc[0]获取众数的具体值,同时判断如果没有众数时给出友好提示
  • 格式化输出:统计量保留两位小数,写入文件时添加清晰标题,数据输出去掉索引,可读性更强
  • 指定编码:写入文件时指定encoding='utf-8',避免中文或特殊字符乱码

如果运行时仍有异常,可以检查这几点:

  • 确认c:\Documents\DS\目录确实存在
  • 确认CSV文件的列名和你代码里的完全一致(注意大小写和空格)
  • 确认CSV文件没有损坏,能正常用Pandas读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:14:38