gpt4 book ai didi

python 在数据集中间停止工作

转载 作者:行者123 更新时间:2023-12-01 05:37:00 25 4
gpt4 key购买 nike

我编写了一个脚本来读取数据并将其绘制到图表中。我有三个输入文件

  • wells.csv:我要创建图表的观察井列表

    1201

    1202

    ...

  • well_summary_table.csv:包含每口井的信息(例如引用海拔、水深)

    Bore_Name Ref_elev

    1201 20

  • data.csv:包含每个孔的观察数据(例如 pH、温度)

    RowId Bore_Name 深度 pH

    1 1201 2 7

并非wells.csv中的所有孔都有要绘制的数据

我的脚本如下

well_name_list = []
new_depth_list =[]
pH_list = []
from pylab import *
infile = open("wells.csv",'r')
for line in infile:
line=line.strip('\n')
well=line
if not well in well_name_list:
well_name_list.append(well)
infile.close()
for well in well_name_list:
infile1 = open("well_summary_table.csv",'r')
infile2 = open("data.csv",'r')
for line in infile1:
line = line.rstrip()
if not line.startswith('Bore_Name'):
words = line.split(',')
well_name1 = words[0]
if well_name1 == well:
ref_elev = words[1]
for line in infile2:
if not line.startswith("RowId"):
line = line.strip('\n')
words = line.split(',')
well_name2 = words[1]
if well_name2 == well:
depth = words[2]
new_depth = float(ref_elev) - float(depth)
pH = words[3]
new_depth_list.append(float(new_depth))
pH_list.append(float(pH))
fig.plt.figure(figsize = (2,2.7), facecolor='white')
plt.axis([0,8,0,60])
plt.plot(pH_list, new_depth_list, linestyle='', marker = 'o')
plt.savefig(well+'.png')
new_depth_list = []
pH_list = []
infile1.close()
infile2.close()

它适用于我一半以上的井列表,然后它停止,没有给我任何错误消息。我不知道发生了什么事。谁能帮我解决这个问题吗?抱歉,如果这是一个显而易见的问题。我是新手。

非常感谢,

最佳答案

@tcaswell 发现了一个潜在的问题 - 每次打开 infile1infile2 后,您都没有关闭它们 - 您至少会有很多打开的文件句柄会四处 float ,具体取决于 wells.csv 文件中有多少个孔。在某些版本的 python 中,这可能会导致问题,但这可能不是唯一的问题 - 如果没有一些测试数据文件,很难说。寻找文件的开头可能会出现问题 - 当您转到下一个孔时,会回到开头。这可能会导致程序按照您所经历的方式运行,但也可能是由其他原因引起的。您应该通过使用 with 来管理打开文件的范围来避免此类问题。

您还应该使用字典将井名与数据结合起来,并在绘图之前预先读取所有数据。这将使您能够准确地了解数据集的构建方式以及存在问题的位置。

我也在下面提出了一些风格建议。这显然是不完整的,但希望你能明白!

import csv
from pylab import * #imports should always go before declarations
well_details = {} #empty dict

with open('wells.csv','r') as well_file:
well_reader = csv.reader(well_file, delimiter=',')
for row in well_reader:
well_name = row[0]
if not well_details.has_key(well_name):
well_details[well_name] = {} #dict to store pH, depth, ref_elev

with open('well_summary_table.csv','r') as elev_file:
elev_reader = csv.reader(elev_file, delimiter=',')
for row in elev_reader:
well_name = row[0]
if well_details.has_key(well_name):
well_details[well_name]['elev_ref'] = row[1]

关于python 在数据集中间停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18711207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com