文件看起来像3列整数。这就是我所拥有的 但是它返回了TypeError:切片索引必须是整数或无,或者具有 index 方法
import statistics
file = open("PokemonF.csv","r")
first_col=[]
sec_col=[]
third_col=[]
columns=[first_col]
for line in file :
data = line.split(',')
first_col.append(int(data[0]))
sec_col.append(int(data[1]))
third_col.append(int(data[2]))
for col_ in columns:
min_col = min(first_col)
sortedData = sorted(first_col)
mid = len(first_col)/2
if len(sortedData) % 2 == 0:
lowerQ = statistics.median(sortedData[:mid])
upperQ = statistics.median(sortedData[mid:])
else:
lowerQ = statistics.median(sortedData[:mid])
upperQ = statistics.median(sortedData[mid+1:])
median_col = statistics.median(first_col)
max_col = max(first_col)
print("Minimum: {}".format(min_col))
print("First quartile: {}".format(lowerQ))
print("Median: {}".format(median_col))
print("Maximum: {}".format(max_col))
file.close
答案 0 :(得分:0)
由于您未能提供Minimal, complete, verifiable example,因此我无法测试该解决方案,但我认为我看到了您的问题:
mid = len(first_col)/2
if ...
lowerQ = statistics.median(sortedData[:mid])
upperQ = statistics.median(sortedData[mid:])
如果first_col
的元素数量为奇数,则mid
是一个浮点值,例如7.5。您不能将其用作字符串切片索引。尝试使用整数除法:
mid = len(first_col) // 2
根据您对“四分位数”边界的本地定义,您可能需要添加1。