【问题标题】:Analyzing data from multiple .txt files in pandas在 pandas 中分析来自多个 .txt 文件的数据
【发布时间】:2020-05-28 12:48:48
【问题描述】:

我有 1000 多个文本文件。每个都有日期(我已经创建了索引)和股票价格(第 0 列)。我创建了代码来查找单个文件的价格移动平均线,以及价格和移动平均线之间的滚动差异。我想为每个文件创建代码来执行此操作。我必须分组上传它们,因为一次上传它们会占用太多内存。

我想我必须使用 for 循环来遍历文件并找到每个文件的指标。但我该怎么做呢?如何将所有文件上传到一个组中,比如将它们分组到一个变量中,然后创建一个循环来找到每个文件的移动平均线和价格差异?

编辑:我正在使用 numpy、pandas 和 matplotlib。我还希望能够找到与移动平均线的差异最大的股票。

任何帮助将不胜感激

【问题讨论】:

  • 如果您将一些代码编辑到问题中,我们可以看到您尝试了什么,您会得到更准确的答案。
  • 你能包含一些你尝试过的代码吗?例如这个问题显示循环遍历多个文件stackoverflow.com/questions/53100599/…
  • 嗯,在一次上传它们时我没有尝试太多,坦率地说,我不知道从哪里开始。我可以通过计算机上的文件夹进行交互吗?就像将文件分成不同的文件夹然后使用for循环一次上传所有文件?我是 python 新手,所以请和我在一起。谢谢
  • @linamnt 感谢您向我展示了这个问题,但一个问题是这些文件都是由股票代码(ABC 等)命名的,而不是所有相同的名称 + 一个数字。因此,除非我可以重命名所有文件以在每个文件后面添加一个数字并取出自动收报机,否则我不能这样做。
  • 我认为 Hal 在下面发布的答案可能是一个好的开始,然后当您需要读取 50 个文件时,您可以使用此示例将文件名列表拆分为块 @987654322 @

标签: python python-3.x pandas matplotlib finance


【解决方案1】:

如果您只想遍历给定文件夹中的所有输入文件,您可能想尝试os.listdir() 来获取文件名列表,然后您可以按顺序处理。如果您的文件分布在多层文件夹中,您可以使用 os.walk() 遍历目录。您可以在此处找到有关这些方法的信息:https://docs.python.org/3/library/os.html

【讨论】:

  • 谢谢!当我回到办公室时会试试这个。
【解决方案2】:

这 1000 个文件有多大?如果它们每个都是几 MB,只是猜测,将所有文件合并到一个文件中,你可以用它做任何你想做的事情。

import pandas as pd
import csv
import glob
import os

#os.chdir("C:\\Users\\Excel\\Desktop\\test\\")
results = pd.DataFrame([])
filelist = glob.glob("C:\\your_path\\*.csv")
#dfList=[]
for filename in filelist:
    print(filename)  
    namedf = pd.read_csv(filename, skiprows=0, index_col=0)
    results = results.append(namedf)

results.to_csv('C:\\your_path\\CombinedFile.csv')

【讨论】:

  • 得到以下信息:OSError:从文件初始化失败。但是谢谢你,我会玩它,看看我能不能得到它。
  • 那个错误没有意义。此外,它对我来说非常好。逐行运行,看看错误出现在哪里。我想你很快就会弄清楚的。
  • This question 解决了可能在 Pandas 中引发该错误的一些文件问题以及如何修复它们 - 主要与文件名中的非标准字符或权限问题有关。值得一看,看看它是否相关。
  • 嗯,只是想...也许您的某些 CSV 文件中有一些特殊字符。你能创建 3 个非常基本的 CSV 文件并在上面测试代码吗?它应该可以正常工作。然后,您知道您正在使用的特定文件有些奇怪。在导入各种数据集时,您可以进行各种文本清理练习。最后,您可能需要应用特殊编码然后读取 CSV 文件,例如 'encoding='utf-8''。请参阅以下链接以获取一些指导。 stackoverflow.com/questions/904041/…
  • 大家好,感谢您的意见,非常感谢。我想出了一种方法将每个文件附加到一个列表中,然后创建循环来遍历每个文件,它似乎可以工作。我还有另一个问题,我将很快发布,但我只想说我非常感谢您的帮助。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多