Hướng dẫn python find max in csv - python tìm thấy tối đa trong csv

Vấn đề ở đây là bạn đang xây dựng một danh sách các chuỗi cột 1, nhưng sau đó mong đợi sẽ tìm Max làm số, không phải là một chuỗi.

Bạn có thể sửa nó bằng cách xây dựng danh sách các chuỗi cột 1 được ánh xạ tới các số nguyên, như các câu trả lời khác cho thấy:

for row in csvReader:
    Revenue.append(int(row[1]))
max_revenue=max(Revenue)

Nhưng một cách khác là sử dụng chức năng chính cho max:

for row in csvReader:
    Revenue.append(row[1])
max_revenue = max(Revenue, key=int)

Thậm chí tốt hơn, bạn có thể sử dụng cùng một ý tưởng để không cần toàn bộ danh sách ____10 riêng biệt đó:

max_revenue_row = max(csvReader, key=lambda row: int(row[1]))

Điều này có nghĩa là bạn có được toàn bộ hàng ban đầu, không chỉ là giá trị số nguyên. Vì vậy, nếu, nói, cột 2 là tên người dùng đi với doanh thu trong cột 1, bạn có thể làm điều này:

max_revenue_row = max(csvReader, key=lambda row: int(row[1]))
best_salesman_name = max_revenue_row[2]

Điều này cũng tránh xây dựng toàn bộ danh sách khổng lồ trong bộ nhớ; Nó chỉ đọc từng hàng vào bộ nhớ một lần và sau đó loại bỏ chúng, và chỉ nhớ lại lớn nhất.

Điều này thường tuyệt vời, nhưng nó có một vấn đề tiềm năng: nếu bạn thực sự cần quét các giá trị hai hoặc nhiều lần thay vì chỉ một lần, lần đầu tiên đã tiêu thụ tất cả các hàng, vì vậy lần thứ hai sẽ không tìm thấy bất kỳ. Ví dụ, điều này sẽ tăng một ngoại lệ trong cuộc gọi thứ hai:

max_revenue_row = max(csvReader, key=lambda row: int(row[1]))
min_revenue_row = min(csvReader, key=lambda row: int(row[1]))

Giải pháp lý tưởng là tổ chức lại mã của bạn để chỉ quét các hàng một lần. Ví dụ: nếu bạn hiểu cách thức hoạt động của

for row in csvReader:
    Revenue.append(row[1])
max_revenue = max(Revenue, key=int)
1 và max, bạn có thể xây dựng chức năng
for row in csvReader:
    Revenue.append(row[1])
max_revenue = max(Revenue, key=int)
3 của riêng mình, cả hai cùng một lúc, và sau đó sử dụng nó như thế này:

min_revenue_row, max_revenue_row = 
    min_and_max(csvReader, key=lambda row: int(row[1]))

Nhưng đôi khi điều đó là không thể, hoặc ít nhất là không thể theo cách bạn có thể tìm ra cách viết dễ đọc. Tôi sẽ cho rằng bạn không biết cách viết

for row in csvReader:
    Revenue.append(row[1])
max_revenue = max(Revenue, key=int)
3. Vậy, bạn có thể làm gì?

Bạn có hai tùy chọn ít hơn lý tưởng, nhưng thường vẫn được chấp nhận: đọc toàn bộ tệp vào bộ nhớ hoặc đọc tệp nhiều lần. Đây là cả hai.


rows = list(csvReader) # now it's in memory, so we can reuse it
max_revenue_row = max(rows, key=lambda row: int(row[1]))
min_revenue_row = min(rows, key=lambda row: int(row[1]))

with open(csvpath) as f:
    csvReader = csv.reader(f)
    max_revenue_row = max(csvReader, key=lambda row: int(row[1]))
with open(csvpath) as f:
    # whole new reader, so it doesn't matter that we used up the first
    csvReader = csv.reader(f)
    min_revenue_row = min(csvReader, key=lambda row: int(row[1]))

Trong trường hợp của bạn, nếu có vẻ như tệp CSV nhỏ, thì nó không thực sự quan trọng đến thế, nhưng có lẽ tôi sẽ làm cái đầu tiên.

Xin chào mọi người, tôi thực sự mới đối với Python và cần một số trợ giúp tìm kiếm giá trị tối đa/cao nhất trong một cột dữ liệu được nhập từ tệp CSV. Tôi đã thử mã này và nó cho tôi câu trả lời sai. Tôi làm sai ở đâu?

file = open ("results.csv")
unneeded = file.readline()
unneeded = file.readline()

maxtime = 0
data = file.readlines


for line in file:
    linelist = line.split(",")
    hours = linelist[4]
    for x in hours:
        if str(x) > str(maxtime):
            maxtime = hours

print (maxtime)

Chào mọi người ,

Bất kỳ ai cũng có thể trợ giúp để có được các giá trị tối đa và tối thiểu từ một cột ACSV được chỉ định. Tệp*CSV lớn*và do đó mã bên dưới đã bị hỏng.* Open (FileName, 'RB') as f: reader = csv.Reader (f, delimiter = ",") ] cho rec in reader) in ít nhất
csv file. The* csv file is large* and hence the below code did go bad.
*Alternate
methods would be highly appreciated
**
minimum.py*:
import csv
filename = "testLog_4.csv"
f = open(filename)
def col_min(mincname):
with open(filename, 'rb') as f:
reader = csv.reader(f, delimiter=",")
#print reader
#print mincname
col_index = next(reader).index(mincname)
#print col_index
least = min(rec[col_index] for rec in reader)
print least

col_min (str ("độ trễ máy chủ")) col_min (str ("độ trễ máy khách")) f.close ()
col_min(str("Client Latency"))
f.close()

*Maximum.py:*Nhập csvfilename = "testLog_4.csv" f = open (tên tệp) def col_max (maxcname): với open (tên tệp, 'rb') là f: reader = csv.reader (f, delimiter = " ")
import csv
filename = "testLog_4.csv"
f = open(filename)
def col_max(maxcname):
with open(filename, 'rb') as f:
reader = csv.reader(f, delimiter=",")
#print reader
#print cname
col_index = next(reader).index(maxcname)
#print col_index
highest = max(rec[col_index] for rec in reader)
print highest

col_max (str ("độ trễ máy chủ")) col_max (str ("độ trễ máy khách")) f.close ()
col_max(str("Client Latency"))
f.close()

Cảm ơn -------------- Phần tiếp theo -------------- Một tệp đính kèm HTML đã bị chà ... url:
-------------- next part --------------
An HTML attachment was scrubbed...
URL:

Tôi nghĩ rằng bạn sẽ được hưởng lợi từ việc đọc dữ liệu vào một mảng numpy trước, sau đó sử dụng các hàm Numpy Min, Max.
then using numpy min, max functions.

Đăng bởi Prakash JPHI Tất cả, bất kỳ ai cũng có thể giúp lấy các giá trị tối đa và tối thiểu từ một cột ACSV được chỉ định. Tệp*CSV lớn*và do đó mã bên dưới đã trở nên xấu. ") Độ trễ ")) Tiếp theo (người đọc) .index (maxcname) #print col_indexhighest = max (rec [col_index] cho rec in inter) Cảm ơn--http: //mail.python.org/mailman/listinfo/python-list
Hi All ,
Could any one help to get max and min values from a specified column of a
csv file. The* csv file is large* and hence the below code did go bad.
*Alternate
methods would be highly appreciated
**
import csv
filename = "testLog_4.csv"
f = open(filename)
reader = csv.reader(f, delimiter=",")
#print reader
#print mincname
col_index = next(reader).index(mincname)
#print col_index
least = min(rec[col_index] for rec in reader)
print least
col_min(str("Server Latency"))
col_min(str("Client Latency"))
f.close()
*maximum.py:*
import csv
filename = "testLog_4.csv"
f = open(filename)
reader = csv.reader(f, delimiter=",")
#print reader
#print cname
col_index = next(reader).index(maxcname)
#print col_index
highest = max(rec[col_index] for rec in reader)
print highest
col_max(str("Server Latency"))
col_max(str("Client Latency"))
f.close()
Thanks
--
http://mail.python.org/mailman/listinfo/python-list

--View Thông điệp này trong bối cảnh: http://old.nabble.com/find-max-and-min-values-from-a-pract-of-a-csv-file-tp3201186132012126.htmlsent từ Python-Python -Lưu trữ danh sách gửi thư tại nabble.com.
View this message in context: http://old.nabble.com/find-max-and-min-values-from-a-column-of-a-csv-file-tp32011861p32012126.html
Sent from the Python - python-list mailing list archive at Nabble.com.

Cảm ơn các đề xuất. Cảm thấy chủ đề có thể giúp đỡ onconsoliding các giải pháp.
consolidating the solution.

*Giá trị tối đa từ cột CSV:*

Nhập numpydata1 = numpy.genfromtxt ("data.csv", dtype = 'float', delimiter = ',', skiprows = 1, skip_header = 0, skip_footer = 0, usecols = 11, usemask = true) #print dữ liệu1print. Max ()
data1 = numpy.genfromtxt("data.csv",dtype='float',delimiter =
',',skiprows=1, skip_header=0, skip_footer=0,
usecols=11,usemask=True)
#print data1
print data1.max()

Làm ơn đi qua liên kết dưới đây để hiểu thêm về các đối số Takenby numpy.genFromTXT ():
by numpy.genfromtxt():

http://docs.scipy.org/doc/numpy-1.4.x/reference/generated/numpy.genfromtxt.html

Cảm ơn -------------- Phần tiếp theo -------------- Một tệp đính kèm HTML đã bị chà ... url:
-------------- next part --------------
An HTML attachment was scrubbed...
URL:

Đăng bởi Prakash JPCould bất kỳ một trợ giúp nào để nhận các giá trị tối đa và tối thiểu từ một cột ACSV được chỉ định. Tệp*CSV lớn*và do đó mã bên dưới đã trở nên xấu. ") Độ trễ ")) f.close ()
Could any one help to get max and min values from a specified column of a
csv file. The* csv file is large* and hence the below code did go bad.
*Alternate
methods would be highly appreciated
**
import csv
filename = "testLog_4.csv"
f = open(filename)
reader = csv.reader(f, delimiter=",")
#print reader
#print mincname
col_index = next(reader).index(mincname)
#print col_index
least = min(rec[col_index] for rec in reader)
print least
col_min(str("Server Latency"))
col_min(str("Client Latency"))
f.close()

Tôi không thấy một cách để làm cho điều này nhanh hơn nhiều vì nó có lẽ đã bị ràng buộc bởi I/O. Bạn có thể thử và tính toán tất cả bốn Extrema cùng một lúc, vì vậy bạn chỉ cần thông báo qua tệp một lần:
bound. You can try and calculate all four extrema at once, so you have to
iterate over the file only once:

$ CAT CSV_MINMAX_CHUNKED.PY#!
#!/usr/bin/env python
import csv
import locale
from itertools import islice

def make_key (chỉ mục, loại): khóa def (hàng): loại trả về (hàng [index]) phím trả về
def key(row):
return type(row[index])
return key

Trình tổng hợp lớp (đối tượng): def __init __ (self, name, index, type, key = none): self.name = nameelf.index = index self {"khóa": khóa} nếu không phải là không ai khác {} def __repr __ (self): return "{0} (name = {1}, index = {2}, type = {3}". tự) .__ name__, self.name, self.index, self.type) def __str __ (self): thử: return " %s: %s ... %s" %(self.name, self.min, self. tối đa) ngoại trừ thuộc tínhRorror: return " % s: (không có giá trị)" % self.namedef update (self, rows): value = map (self.getValue, hàng) chunkmin = min (giá trị, ** self.key) ChunkMax = Max (Giá trị, ** self.key) Hãy thử: Curmin = self.MinCurMax = self.MaxExcept AportorRor: self.min = ChunkMinelf. .Max = Max (Curmax, Chunkmax, ** self.key)
def __init__(self, name, index, type, key=None):
self.name = name
self.index = index
self.type = type or float
self.getvalue = make_key(index, type)
self.key = {"key": key} if key is not None else {}
def __repr__(self):
return "{0}(name={1}, index={2}, type={3}".format(
type(self).__name__, self.name, self.index, self.type)
def __str__(self):
try:
return "%s: %s...%s" % (self.name, self.min, self.max)
except AttributeError:
return "%s: (no values)" % self.name
def update(self, rows):
values = map(self.getvalue, rows)
chunkmin = min(values, **self.key)
chunkmax = max(values, **self.key)
try:
curmin = self.min
curmax = self.max
except AttributeError:
self.min = chunkmin
self.max = chunkmax
else:
self.min = min(curmin, chunkmin, **self.key)
self.max = max(curmax, chunkmax, **self.key)

DEF DENCE (S): Trả lại s
return s

Convert = {"float": (float,), "int": (int,), "văn bản": (lambda s: s, locale.strxfrm), "": (nhận dạng,)}
"float": (float,),
"int": (int,),
"text": (lambda s: s, locale.strxfrm),
"": (identity,)
}

def main (): locale.setlocale (locale.lc_all, "")
locale.setlocale(locale.LC_ALL, "")

Nhập argparseparser = argparse.argumentparser () Parser.add_argument ("csvfile") Parser.add_argument ("cột", nargs = "+") Parser.add_argument (" = 2 ** 12) args = Parser.parse_args ()
parser = argparse.ArgumentParser()
parser.add_argument("csvfile")
parser.add_argument("columns", nargs="+")
parser.add_argument("--chunksize", "-s", type=int, default=2**12)
args = parser.parse_args()

ntpairs = (cột. Tên, INDEX) cho chỉ mục, Tên Inenumerate (Tiếp theo (hàng)))) . AGG
with open(args.csvfile, "rb") as instream:
rows = csv.reader(instream)
header = dict((name, index) for index, name in
enumerate(next(rows)))
aggregators = [
Aggregator(
"{0}({1})".format(name, type or "str"),
header[name],
*convert[type])
for name, type in ntpairs]
chunksize = args.chunksize
while True:
chunk = list(islice(rows, chunksize))
if not chunk:
break
for agg in aggregators:
agg.update(chunk)
for agg in aggregators:
print agg

Nếu __name__ == "__main __": main () $ head sample.csvalpha, beta, gamma, delta69, -454,460960, elijah92,796,27885, 518.327010, McMahon84,604.540764, DEVENTION83,117,621832, Chủ nghĩa ăn chay61,411,844243, TAN29, -147,982043, Plushest. Floatdelta Delta: Textalpha (int): 0 ... 99beta (int): -1000 ... 999beta (str): -1 ... .? tudesdelta (văn bản): một ... Zyuganov's
main()
$ head sample.csv
alpha,beta,gamma,delta
69,-454,460960,ELIJAH
92,796,278885,SUFFICIENCY
42,895,934523,PIONEERED
88,-213,360633,reassert
63,-518,327010,mcmahon
84,604,540764,deprecatory
83,117,621832,VEGETARIANISM'S
61,411,844243,tan
29,-147,982043,plushest
$ ./csv_minmax_chunked.py sample.csv alpha:int beta:int beta gamma:float
delta delta:text
alpha(int): 0...99
beta(int): -1000...999
beta(str): -1...999
gamma(float): 0.0...999997.0
delta(str): AALIYAH...?tudes
delta(text): a...ZYUGANOV'S

Làm thế nào để bạn tìm thấy giá trị trung bình của tệp CSV trong Python?

Các bước để tính toán số liệu thống kê từ tệp CSV đã nhập..
Bước 1: Sao chép tập dữ liệu vào tệp CSV.Để bắt đầu, bạn sẽ cần sao chép bộ dữ liệu trên vào tệp CSV.....
Bước 2: Nhập tệp CSV vào Python.....
Bước 3: Sử dụng gấu trúc để tính toán số liệu thống kê từ tệp CSV đã nhập ..

Làm cách nào để đọc một hàng cụ thể trong tệp CSV trong Python?

Sử dụng độc giả..
Bước 1: Để đọc các hàng trong Python, trước tiên, chúng ta cần tải tệp CSV trong một đối tượng.Vì vậy, để tải tệp CSV vào một đối tượng sử dụng phương thức Open () ..
Bước 2: Tạo đối tượng đầu đọc bằng cách chuyển đối tượng tệp được tạo ở trên cho hàm đầu đọc ..
Bước 3: Sử dụng cho vòng lặp trên đối tượng đầu đọc để có được mỗi hàng ..

Làm cách nào để tổng hợp một cột trong CSV Python?

Làm cách nào để tổng hợp một cột trong Python CSV ?..
Nhập Gandas dưới dạng PD ..
Dữ liệu = pd.read_csv ('pandas.csv').
df = pd.DataFrame (dữ liệu).
id_sum = 0 ..
data_sum = 0 ..
Đối với I trong phạm vi (Len (DF)):.
if (i == len (df) -2 hoặc i == len (df) -1):.
id_sum = id_sum + df.ILOC [i] [0].