计算列值大于的行 - Big csv python
Count rows with column value greater than - Big csv python
我有一个非常大的 csv,大约有 3500 万行。
我有一个简单的 python 计算总行数:
file_name = 'extract.csv'
start = time.time()
with open(file_name) as f:
line_count = sum(1 for line in f)
print(line_count)
可执行文件速度非常快,并且在没有内存块的情况下运行良好。
现在我需要计算 Y 列中包含大于或小于 X 值的行。
如何在不发生崩溃且不减慢执行速度的情况下解决问题?
假设您的列名为 col_y
并且您的值是整数,您可以使用 python csv
模块。
import csv
threshold = 10
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
line_count = sum(1 for row in reader if int(row.get("col_y", 0)) > threshold)
print(line_count)
或用于计算多个事物:
import csv
threshold = 10
above = 0
below = 0
equal = 0
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
val = int(row.get("col_y", 0))
if val > threshold:
above += 1
elif val < threshold:
below += 1
elif val == threshold:
equal += 1
else:
print("Something isn't right")
print(f"{above:,} above")
print(f"{below:,} below")
print(f"{equal:,} equal")
这些片段使用 cvs.DictReader
。您可以查看文档以了解您可能需要如何编辑这些示例以满足您的需要。
我有一个非常大的 csv,大约有 3500 万行。
我有一个简单的 python 计算总行数:
file_name = 'extract.csv'
start = time.time()
with open(file_name) as f:
line_count = sum(1 for line in f)
print(line_count)
可执行文件速度非常快,并且在没有内存块的情况下运行良好。
现在我需要计算 Y 列中包含大于或小于 X 值的行。
如何在不发生崩溃且不减慢执行速度的情况下解决问题?
假设您的列名为 col_y
并且您的值是整数,您可以使用 python csv
模块。
import csv
threshold = 10
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
line_count = sum(1 for row in reader if int(row.get("col_y", 0)) > threshold)
print(line_count)
或用于计算多个事物:
import csv
threshold = 10
above = 0
below = 0
equal = 0
file_name = "extract.csv"
with open(file_name, newline="") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
val = int(row.get("col_y", 0))
if val > threshold:
above += 1
elif val < threshold:
below += 1
elif val == threshold:
equal += 1
else:
print("Something isn't right")
print(f"{above:,} above")
print(f"{below:,} below")
print(f"{equal:,} equal")
这些片段使用 cvs.DictReader
。您可以查看文档以了解您可能需要如何编辑这些示例以满足您的需要。