[英]I need to calculate 1st and 3rd quartile in csv file without using numpy and pandas
File looks like 3 columns of integer numbers. 文件看起来像3列整数。 This is what I have But it is returning me TypeError: slice indices must be integers or None or have an index method 这就是我所拥有的,但是它返回给我TypeError:切片索引必须为整数或None或具有索引方法
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
I can't test the solution since you failed to provide a Minimal, complete, verifiable example , but I think I see your problem: 由于您未能提供一个最小,完整,可验证的示例 ,因此我无法测试该解决方案,但我认为我看到了您的问题:
mid = len(first_col)/2
if ...
lowerQ = statistics.median(sortedData[:mid])
upperQ = statistics.median(sortedData[mid:])
If first_col
has an odd quantity of elements, then mid
is a float value, such as 7.5. 如果first_col
的元素数量为奇数,则mid
为浮点值,例如7.5。 You can't use that as a string slice index. 您不能将其用作字符串切片索引。 Try integer division instead: 尝试使用整数除法:
mid = len(first_col) // 2
Depending on your local definition of "quartile" boundary, you may need to add 1. 根据您对“四分位数”边界的本地定义,您可能需要添加1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.