python 最大值最小值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 最大值最小值问题相关的知识,希望对你有一定的参考价值。

txt文件里面,求问怎么求出词数最多的一行和词最长的一行。。还有每行词数的平均数。。。求问
文件的一部分如下。。

unferried,underfire
myosote,toysome
fondu,found
mise,sime
donor,rondo
tenanter,retenant
monozoic,zoonomic
nicotianin,nicotinian
unlade,unlead
alation,ailanto
inaptly,planity
stag,gast
sane,anes
sealwort,restowal
magic,gamic
adherent,headrent
musing,signum

文本一行一行读入,读入后用 split 就可以将该行分隔为每个词独立的列表。

用 len 就能得到有多少个词。建个列表存放起来就可以对应得到每行词数长度,

下标就是对应的行数,到时候max, min一下就能得到哪行词数最多,哪行词数最少了。

平均数无非就是 sum 一下再除以行数。

词的长度就是对 split 后的列表 for in 一下再调用 len。

line = "'abc','1234','a2dfa3'"
list = line.split(',')
print len(list)

for word in list:
    print len(word)
    
wordlist = [1,2,3,3,2,1]
print max(wordlist)
print min(wordlist)
print sum(wordlist) / len(wordlist)

参考技术A 可以研究下nltk

Python,从 csv 获取最小值、最大值和 95 percentil

【中文标题】Python,从 csv 获取最小值、最大值和 95 percentil【英文标题】:Python, get min, max and 95 percentil from csv 【发布时间】:2018-04-23 01:03:49 【问题描述】:

我有一个来自 perfmon 的 .csv 文件。该文件有 6000 条记录,如下所示:

(PDH-CSV 4.0) (SA Pacific Standard Time)(300),"\\server1\PhysicalDisk(_Total)\% Disk Read Time","\\server1\PhysicalDisk(_Total)\% Disk Write Time"
10/30/2017 15:00:15.568," "," "
10/30/2017 15:00:30.530,"25.763655942362824","130.21748494987176"
10/30/2017 15:00:45.518,"25.591636684958058","135.81093813384427"

我需要从第 1 列和第 2 列中获取最小值、最大值和 95 个百分位数。但是,作为一个新手,我无法通过第一个挑战,即将每个值格式化为 int:

import csv
sum = 0
fila = 0

with open('datos_header.csv') as csvfile:
    leercsv = csv.reader(csvfile, delimiter = ',')
    csvfile.__next__()
    for col in leercsv:
        col1 = (col[1])
        subtot = float(col1 * 4)
#        fila = fila + 1
#        sum = col1 + float(col)

#tot = sum / fila
    print(subtot)

然后得到:

Traceback(最近一次调用最后一次): 文件“”,第 10 行,在 ValueError:无法将字符串转换为浮点数:

我试过了: - 删除标题 - 使用正则表达式删除每个非数字的 / 或 : 值 - 删除空白

话虽如此:

    除了错误之外,您认为我在获取最小值、最大值和 95 percentil 的道路上是否正确? 如果是这样,需要按照我的代码将字符串转换为浮点数吗? 如果没有,请您帮忙吗?

谢谢!

【问题讨论】:

如果你想要一个内置的解决方案,你可以使用pandas读取csv文件,然后使用here描述的分位数函数 如果你将一个字符串相乘,例如"2.5" 和 4 会导致 "2.52.52.52.5" 不是浮点数。 请不要将您的整个家庭作业作为问题发布。将您的问题集中在特定问题上。例如,您可以只发布代码的第 10 行和您得到的异常,并询问如何将字符串正确转换为浮点数。 文件的第二行是10/30/2017 15:00:15.568," "," "。最后两列是不能转换为浮点数的空格。将您对 float 的调用包装在 try-except 中,然后在 except 子句中处理这些情况。您可能想跳过这些行,在这种情况下您可以continue。或者您可以在这些情况下设置默认值。 subtot = float(col1 * 4) 也不适用于浮点的有效字符串表示。你可能想要subtot = float(col1) * 4 【参考方案1】:

您必须先检查字符串以进行浮动转换,因此您可以尝试:

for col in leercsv:
    col1 = (col[1])
    if col1: subtot = float(col1) * 4 # and convert to float before multiply

更强大的解决方案:

for col in leercsv:
    col1 = (col[1])
    try: subtot = float(col1) * 4
    except: pass

【讨论】:

谢谢 efirvida,它添加了错误处理的东西。我想它确认有一个字符串 - 像 Steven Rumbalksi 提到的空格 -。我的假设是否正确? @HelloWorld,是的,除了跳过它内部发生的任何错误之外的尝试,所以如果浮点转换运行通过异常,代码 wikk 执行除了在这种情况下传递的部分没有意义

以上是关于python 最大值最小值问题的主要内容,如果未能解决你的问题,请参考以下文章

python 求n个数最大值 最小值

python求最大值、最小值、求和、平均值

python求最大值最小值代码

python求一组数组最大值,最小值,平均值

Python 的 hash() 函数返回的最大值/最小值

[基础] 在Python中获得字典列表中最大值与最小值