Python 如何计算具有指定值的文本文件中的行数?

Python 如何计算具有指定值的文本文件中的行数?,python,Python,我正在使用一个.csv文件,该文件在一列中列出时间戳,在第二列中列出风速。我需要通读这个.csv文件,计算风速超过2m/s的时间百分比。这是我到目前为止所拥有的 txtFile = r"C:\Data.csv" line = o_txtFile.readline()[:-1] while line: line = oTextfile.readline() for line in txtFile: line = line.split(",")[:-1] 如何获得行中第二个元素大于

我正在使用一个.csv文件,该文件在一列中列出时间戳,在第二列中列出风速。我需要通读这个.csv文件,计算风速超过2m/s的时间百分比。这是我到目前为止所拥有的

txtFile = r"C:\Data.csv"
line = o_txtFile.readline()[:-1]
while line:
    line = oTextfile.readline()
for line in txtFile:
    line = line.split(",")[:-1]
如何获得行中第二个元素大于2的行数


根据所选选项,您可能需要稍微更新您的CSV(对于选项1和选项2,您肯定希望删除所有标题行,而对于选项3,您将只保留中间的一行,即以
时间戳开始的一行

实际上,您有三种选择:

选项1:普通Python

count=0
打开('data.csv','r')作为文件:
对于文件中的行:
value=int(line.split(',')[1])
如果值>100:
计数+=1
#现在,在变量“count”中有了值
选项2:CSV模块

在这里,我使用(您也可以使用
DictReader
,但我会让您自己进行搜索)

导入csv
计数=0
打开('data.csv','r')作为文件:
reader=csv.read(文件,分隔符=',')
对于读取器中的行:
如果int(第[1]行)大于100:
计数+=1
#现在,在变量“count”中有了值
选项3:熊猫

是一个非常酷、非常棒的库,很多人都用它来做数据分析。做你想做的事情看起来像:

将熊猫作为pd导入
df=pd.read\u csv('data.csv'))
#给你
计数=len(df[df['windpd_ms']>100])

您可以逐行读取文件,如果文件中有内容,请将其拆分。 您计算读取的线数以及超过10m/s的线数-然后计算百分比:

# create data file for processing with random data
import random
random.seed(42)

with open("data.txt","w") as f:
    f.write("header\n") 
    f.write("header\n") 
    f.write("header\n") 
    f.write("header\n") 
    for sp in random.choices(range(10),k=200):
        f.write(f"some date,{sp+3.5}, data,data,data\n")


# open/read/calculate percentage of data that has  10m/s speeds
days = 0
speedGreater10 = 0
with open("data.txt","r") as f:
    for _ in range(4):
        next(f) # ignore first 4 rows containing headers

    for line in f:
        if line: # not empty
            _ , speed, *p = line.split(",") 
            # _ and *p are ignored (they take 'some date' + [data,data,data])
            days += 1
            if float(speed) > 10:
                speedGreater10 += 1

print(f"{days} datapoints, of wich {speedGreater10} "+
      f"got more then 10m/s: {speedGreater10/days}%")
输出:

200 datapoints, of wich 55 got more then 10m/s: 0.275%
数据文件:

header
header
header
header
some date,9.5, data,data,data
some date,3.5, data,data,data
some date,5.5, data,data,data
some date,5.5, data,data,data
some date,10.5, data,data,data
[... some more ...]
some date,8.5, data,data,data 
some date,3.5, data,data,data
some date,12.5, data,data,data
some date,11.5, data,data,data

您可以与open(txtFile,“r”)共享您的csv示例吗?
,因为缺少o_txtFile: