Pandas计算CSV各列均值并保存结果至新CSV的技术咨询
Pandas计算CSV各列均值并保存结果至新CSV的技术咨询
嗨,别担心,刚开始碰编程遇到这些小问题太正常啦!我来帮你把这些需求一步步拆解清楚~
首先说核心需求:计算CSV每列的均值,然后把结果导出成新的CSV文件。你之前的代码里误用了groupby——其实根本不需要分组,Pandas里直接用mean()方法就能一键计算所有列的均值,简单多了!
第一步:修正均值计算的代码
先看正确的操作流程:
- 读取CSV文件
- 直接调用
df.mean()计算每列均值 - (可选)调整数值显示格式,避免科学计数法
比如你的场景,正确代码应该是这样:
import pandas as pd # 读取CSV文件 df = pd.read_csv('ny_data.csv') # 直接计算所有列的均值——这一步就搞定了! column_means = df.mean() print(column_means)
关于科学计数法的疑问
你看到的3.992766e+06其实是科学计数法,代表3.992766 × 10^6,也就是3992766左右。Pandas默认会对较大的数值用这种格式显示,如果你想改成普通的数字格式,可以加一行设置:
# 设置显示格式,保留两位小数,不用科学计数法 pd.set_option('display.float_format', '{:.2f}'.format) print(column_means)
这样输出就会变成更直观的:
Upper Manhattan 3992766.00 Inwood 3397648.00 Harlem 3646264.00 ...
第二步:把均值结果导出到新CSV
拿到均值结果后,用to_csv()方法就能轻松保存成新文件:
# 把均值结果导出为CSV,index=True保留列名(作为第一列) column_means.to_csv('district_means.csv', index=True, header=['Mean Value'])
这样生成的CSV文件会有两列:第一列是区域名称,第二列是对应的均值。
完整测试示例(包含生成测试数据)
如果你需要先生成测试CSV再验证,完整代码可以这样写:
import pandas as pd import numpy as np # 定义数据规模 SIZE = 100 # 生成测试数据 nydata = pd.DataFrame({ "Upper Manhattan": np.random.randint(low=2000000, high=6000000, size=SIZE), "Inwood": np.random.randint(low=3000000, high=3800000, size=SIZE), "Harlem": np.random.randint(low=2300000, high=5000000, size=SIZE), "Leonx Hill": np.random.randint(low=10000000, high=12000000, size=SIZE), "Astor Row": np.random.randint(low=4000000, high=6000000, size=SIZE), "Upper East Side": np.random.randint(low=20000000, high=25000000, size=SIZE) }) # 保存测试数据到CSV nydata.to_csv('ny_data.csv', index=False) # 读取CSV并计算均值 df = pd.read_csv('ny_data.csv') column_means = df.mean() # 设置显示格式 pd.set_option('display.float_format', '{:.2f}'.format) print("各区域均值:") print(column_means) # 保存均值到新CSV column_means.to_csv('district_means.csv', index=True, header=['Mean Value']) print("均值结果已保存到district_means.csv")
这样运行后,你既能看到控制台输出的清晰均值,又能得到一个只包含均值结果的新CSV文件啦!
备注:内容来源于stack exchange,提问作者Zarathustra
相关产品推荐
相关产品推荐

