[英]Data Analysis when Reading a .xls File using Python
我正在使用 Python 进行数据分析项目。 我有一个 .xls 文件,我需要从每一行读取并获取某些信息。 我正在使用 xlrd。
当我在记事本中打开文件时,前十行是关于文件内容的注释,然后是实际数据。 如何跳过所有以“#”开头的行?
此外,一旦到达行,我想遍历每一行并将每行的每一列中的元素分开,并将其添加到每列的字典中。 我将如何根据列分隔每行中的数据?
截至目前,这是我的代码:
peaksheets = peakfile.sheet_by_name("Sheet1")
num_rows = peaksheets.nrows -1
curr_row = -1
while curr_row < num_rows:
curr_row +=1
row = str(peaksheet.row(curr_row))
words = row.strip().split('\t')
c = words[0]
s = int(words[1])
当我运行我的代码时,我也收到以下错误:
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '# This f'
这就是为什么我想跳过以“#”符号开头的行。
尝试使用 pandas 将文件读取到数据帧。 如果你真的需要字典中的数据,你可以将它从数据框中传递给一个。
import pandas as pd
df = pd.read_excel('file.xls', 'Sheet1', skiprows=range(10))
datadict = df.to_dict(orient='dict')
那这个呢?
peaksheets = peakfile.sheet_by_name("Sheet1")
dict_data = {}
num_rows = peaksheets.nrows -1
curr_row = -1
while curr_row < num_rows:
curr_row +=1
# we want to skip the comments
if row.startswith('#'):
continue
row = str(peaksheet.row(curr_row))
words = row.strip().split('\t')
for i in range(len(words)):
dict_data[curr_row][i] = words[i]
c = words[0]
s = int(words[1])
如果前 10 行是您不想要的唯一行,您总是可以从 10 开始curr_row
。至于您的字典,请尝试以下操作:
headers=[(names of the columns to use as keys for your dict)]
dict_list=[]
col_list=[None]*len(headers)
for curr_row in range(10, peaksheets.nrows):
for curr_cell in range(peaksheets.ncols):
cell_value = str(peaksheets.cell(curr_row, curr_cell).value)
col_list[curr_row].append(cell_value)
for head_name in headers:
dict_list[head_name]=col_list[headers.index(head_name)]
需要牢记以下几点:
headers
列表while
循环的替代品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.