【问题标题】:How can I read multiple csv files from a single directory and graph them separately in Python?如何从单个目录中读取多个 csv 文件并在 Python 中分别绘制它们?
【发布时间】:2019-09-24 07:09:52
【问题描述】:

我想从一个目录中读取 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()

【问题讨论】:

  • 如果此时ax 未定义,那么调用ax.scatter 将是一个巨大的问题……您可能需要在其中的某个位置添加一行fig, ax = plt.subplots()。此外,您在ax.set_title("TestNum1) 行中缺少"
  • @Reedinationer 对不起,我忘了在里面加上我有那些。我现在会更新它。

标签: python pandas csv matplotlib glob


【解决方案1】:

您只需要在所有文件上添加一个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 中为绘图添加标题”应该很容易找到其他问题的答案。

【讨论】:

  • 谢谢。我能够让它运行。你知道是否有一种方法可以让你点击查看不同的图,而且我想迭代每个图的标题。例如:分别为 TestNum1、TestNum2 等。我试着写一个 for 循环,但它写的是路径而不是标题。
  • 对于标题,您可以像title = files.split('/')[-1].split('.')[0]一样拆分文件名来选择csv文件的名称。
  • 代码中的哪个位置?我一直在想办法
  • ax.set_title(title)
  • @Dean 如果你想花哨,你可以在 Python 中查找字符串格式。
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多