首页 > 解决方案 > 如何从单个目录中读取多个 csv 文件并在 Python 中分别绘制它们?

问题描述

我想从一个目录中读取 csv 文件并绘制它们,并能够单击箭头按钮来逐步浏览一个图并查看不同的图。我想指定哪一列并能够像下面的代码一样为其命名。

我能够读取 csv 文件并绘制带有特定列的单个图,但我不确定如何使用多个。我试过 glob 但没有用,我不想将它们连接到单个 csv 文件。我在下面提供了我的代码。任何帮助,将不胜感激。谢谢你。

import pandas as pd
import matplotlib.pyplot as plt


cols_in = [1, 3]
col_name = ['Time (s), Band (mb)']

df = pd.read_csv("/user/Desktop/TestNum1.csv", usecols = cols_in, names = 
col_name, header = None)
fig, ax = plt.subplots()
my_scatter_plot = ax.scatter(df["Time (s)"], df["Band (mb)"])

ax.set_xlabel("Time (s)")
ax.set_ylabel("Band (mb)")
ax.set_title("TestNum1")
plt.show()

标签: pythonpandascsvmatplotlibglob

解决方案


您只需要for在所有文件上添加一个循环并用于glob收集它们。

例如,

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


cols_in = [1, 3]
col_name = ['Time (s), Band (mb)']

# Select all CSV files on Desktop
files = glob.glob("/user/Desktop/*.csv")

for file in files:

    df = pd.read_csv(file, usecols = cols_in, names = 
    col_name, header = None)

    fig, ax = plt.subplots()
    my_scatter_plot = ax.scatter(df["Time (s)"], df["Band (mb)"])

    ax.set_xlabel("Time (s)")
    ax.set_ylabel("Band (mb)")
    ax.set_title("TestNum1")
    plt.show()

保持plt.show()for循环内将确保绘制每个图。搜索“如何在 python 中为绘图添加标题”应该很容易找到其他问题的答案。


推荐阅读