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

如何批量读取文件夹中CSV文件并生成对应PNG可视化图?

批量处理CSV文件并生成对应PNG图

原代码的问题

  • 错误地将文件夹路径直接传给pd.read_csv(),read_csv需要单个文件的完整路径,而非文件夹路径
  • 存在语法错误:df.'columnname'应改为df['columnname'];value_counts.(normalize=True)多了一个点,正确写法是value_counts(normalize=True)
  • 图片保存逻辑未关联单个CSV文件,无法生成对应名称的PNG文件

修改后的批量处理代码

import pandas as pd
import os
import matplotlib.pyplot as plt

folder_path = "C:/Users/xyz/Desktop/Countrieslist"

# 遍历文件夹下所有CSV文件
for filename in os.listdir(folder_path):
    if filename.endswith(".csv"):
        # 拼接单个CSV文件的完整路径
        file_path = os.path.join(folder_path, filename)
        # 读取CSV文件
        df = pd.read_csv(file_path)
        
        # 修正语法错误,处理数据(替换成你的实际列名)
        column_name = "你的列名"  # 把这里替换成实际列名,比如"country"
        X = df[column_name].value_counts(normalize=True).head(5)
        
        # 绘图
        X.plot.barh()
        plt.ylabel(column_name)  # 补充标签内容,比如"国家"
        plt.xlabel("占比")  # 补充X轴标签
        plt.title(f"Top 5 {column_name} 占比")  # 补充标题
        
        # 生成对应PNG文件名:把csv后缀替换成png
        png_filename = os.path.splitext(filename)[0] + ".png"
        png_path = os.path.join(folder_path, png_filename)
        # 保存图片(bbox_inches避免标签被截断)
        plt.savefig(png_path, bbox_inches='tight')
        # 关闭当前绘图,避免后续图形重叠
        plt.close()

关键说明

  • 使用os.listdir()遍历文件夹,通过endswith(".csv")筛选目标文件
  • 用os.path.join()拼接文件路径,避免跨系统路径格式问题
  • 每个文件处理完成后调用plt.close(),防止不同文件的绘图元素互相干扰
  • 替换代码中的"你的列名"为实际需要统计的列名称,并补充标签、标题的具体内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:07:49