Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc [Comma Separated Values] is a simple fileformat used to store tabular data, such as a spreadsheet or database. A CSV file stores tabular data [numbers and text] in plain text. Each line of the file is a data record. Each record consists of one or more fields, separated by commas. The use of the comma as a field separator is the source of the name for this file format.
Bàn luận
CSV [Giá trị phân tách bằng dấu phẩy] là một tệp đơn giản được sử dụng để lưu trữ dữ liệu bảng, chẳng hạn như bảng tính hoặc cơ sở dữ liệu. Tệp CSV lưu trữ dữ liệu bảng [số và văn bản] trong văn bản thuần túy. Mỗi dòng của tệp là một bản ghi dữ liệu. Mỗi hồ sơ bao gồm một hoặc nhiều trường, cách nhau bằng dấu phẩy. Việc sử dụng dấu phẩy làm dấu phân cách trường là nguồn của tên cho định dạng tệp này.
Python3
Trong bài viết này, chúng tôi sẽ thảo luận về các cách tiếp cận khác nhau để đếm số lượng dòng trong tệp CSV bằng Python.
Chúng tôi sẽ sử dụng bộ dữ liệu dưới đây để thực hiện tất cả các hoạt động:
import timeit
import csv
import pandas as pd
filename = './sample_submission.csv'
def talktime[filename, funcname, func]:
print[f"# {funcname}"]
t = timeit.timeit[f'{funcname}["{filename}"]', setup=f'from __main__ import {funcname}', number = 100] / 100
print['Elapsed time : ', t]
print['n = ', func[filename]]
print['\n']
def sum1forline[filename]:
with open[filename] as f:
return sum[1 for line in f]
talktime[filename, 'sum1forline', sum1forline]
def lenopenreadlines[filename]:
with open[filename] as f:
return len[f.readlines[]]
talktime[filename, 'lenopenreadlines', lenopenreadlines]
def lenpd[filename]:
return len[pd.read_csv[filename]] + 1
talktime[filename, 'lenpd', lenpd]
def csvreaderfor[filename]:
cnt = 0
with open[filename] as f:
cr = csv.reader[f]
for row in cr:
cnt += 1
return cnt
talktime[filename, 'csvreaderfor', csvreaderfor]
def openenum[filename]:
cnt = 0
with open[filename] as f:
for i, line in enumerate[f,1]:
cnt += 1
return cnt
talktime[filename, 'openenum', openenum]
0import timeit
import csv
import pandas as pd
filename = './sample_submission.csv'
def talktime[filename, funcname, func]:
print[f"# {funcname}"]
t = timeit.timeit[f'{funcname}["{filename}"]', setup=f'from __main__ import {funcname}', number = 100] / 100
print['Elapsed time : ', t]
print['n = ', func[filename]]
print['\n']
def sum1forline[filename]:
with open[filename] as f:
return sum[1 for line in f]
talktime[filename, 'sum1forline', sum1forline]
def lenopenreadlines[filename]:
with open[filename] as f:
return len[f.readlines[]]
talktime[filename, 'lenopenreadlines', lenopenreadlines]
def lenpd[filename]:
return len[pd.read_csv[filename]] + 1
talktime[filename, 'lenpd', lenpd]
def csvreaderfor[filename]:
cnt = 0
with open[filename] as f:
cr = csv.reader[f]
for row in cr:
cnt += 1
return cnt
talktime[filename, 'csvreaderfor', csvreaderfor]
def openenum[filename]:
cnt = 0
with open[filename] as f:
for i, line in enumerate[f,1]:
cnt += 1
return cnt
talktime[filename, 'openenum', openenum]
1Output:
import
pandas as pd
results
=
pd.read_csv[
'Data.csv'
- Để đếm số lượng dòng/hàng có trong tệp CSV, chúng tôi có hai loại phương thức khác nhau:
Sử dụng hàm len [].len[] function
Sử dụng một quầy.
Python3
Trong bài viết này, chúng tôi sẽ thảo luận về các cách tiếp cận khác nhau để đếm số lượng dòng trong tệp CSV bằng Python.
Chúng tôi sẽ sử dụng bộ dữ liệu dưới đây để thực hiện tất cả các hoạt động:
import timeit
import csv
import pandas as pd
filename = './sample_submission.csv'
def talktime[filename, funcname, func]:
print[f"# {funcname}"]
t = timeit.timeit[f'{funcname}["{filename}"]', setup=f'from __main__ import {funcname}', number = 100] / 100
print['Elapsed time : ', t]
print['n = ', func[filename]]
print['\n']
def sum1forline[filename]:
with open[filename] as f:
return sum[1 for line in f]
talktime[filename, 'sum1forline', sum1forline]
def lenopenreadlines[filename]:
with open[filename] as f:
return len[f.readlines[]]
talktime[filename, 'lenopenreadlines', lenopenreadlines]
def lenpd[filename]:
return len[pd.read_csv[filename]] + 1
talktime[filename, 'lenpd', lenpd]
def csvreaderfor[filename]:
cnt = 0
with open[filename] as f:
cr = csv.reader[f]
for row in cr:
cnt += 1
return cnt
talktime[filename, 'csvreaderfor', csvreaderfor]
def openenum[filename]:
cnt = 0
with open[filename] as f:
for i, line in enumerate[f,1]:
cnt += 1
return cnt
talktime[filename, 'openenum', openenum]
0# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
0# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
1# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
2# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
3# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
4# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
5Output:
import
pandas as pd
results
=
pd.read_csv[
'Data.csv'
Python3
Để đếm số lượng dòng/hàng có trong tệp CSV, chúng tôi có hai loại phương thức khác nhau:
Sử dụng hàm len [].
Sử dụng một quầy.
import timeit
import csv
import pandas as pd
filename = './sample_submission.csv'
def talktime[filename, funcname, func]:
print[f"# {funcname}"]
t = timeit.timeit[f'{funcname}["{filename}"]', setup=f'from __main__ import {funcname}', number = 100] / 100
print['Elapsed time : ', t]
print['n = ', func[filename]]
print['\n']
def sum1forline[filename]:
with open[filename] as f:
return sum[1 for line in f]
talktime[filename, 'sum1forline', sum1forline]
def lenopenreadlines[filename]:
with open[filename] as f:
return len[f.readlines[]]
talktime[filename, 'lenopenreadlines', lenopenreadlines]
def lenpd[filename]:
return len[pd.read_csv[filename]] + 1
talktime[filename, 'lenpd', lenpd]
def csvreaderfor[filename]:
cnt = 0
with open[filename] as f:
cr = csv.reader[f]
for row in cr:
cnt += 1
return cnt
talktime[filename, 'csvreaderfor', csvreaderfor]
def openenum[filename]:
cnt = 0
with open[filename] as f:
for i, line in enumerate[f,1]:
cnt += 1
return cnt
talktime[filename, 'openenum', openenum]
0# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
0# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
1pandas as pd
4Output:
in [đánh giá_df. head []].
Chỉnh sửa 2018-10-29
Cảm ơn bạn đã cho ý kiến.
with open[filename] as f:
sum[1 for line in f]
Tôi đã thử nghiệm một số loại mã để có được số dòng trong tệp CSV về tốc độ. Phương pháp tốt nhất là dưới đây.
import timeit
import csv
import pandas as pd
filename = './sample_submission.csv'
def talktime[filename, funcname, func]:
print[f"# {funcname}"]
t = timeit.timeit[f'{funcname}["{filename}"]', setup=f'from __main__ import {funcname}', number = 100] / 100
print['Elapsed time : ', t]
print['n = ', func[filename]]
print['\n']
def sum1forline[filename]:
with open[filename] as f:
return sum[1 for line in f]
talktime[filename, 'sum1forline', sum1forline]
def lenopenreadlines[filename]:
with open[filename] as f:
return len[f.readlines[]]
talktime[filename, 'lenopenreadlines', lenopenreadlines]
def lenpd[filename]:
return len[pd.read_csv[filename]] + 1
talktime[filename, 'lenpd', lenpd]
def csvreaderfor[filename]:
cnt = 0
with open[filename] as f:
cr = csv.reader[f]
for row in cr:
cnt += 1
return cnt
talktime[filename, 'csvreaderfor', csvreaderfor]
def openenum[filename]:
cnt = 0
with open[filename] as f:
for i, line in enumerate[f,1]:
cnt += 1
return cnt
talktime[filename, 'openenum', openenum]
Đây là mã được kiểm tra.
# sum1forline
Elapsed time : 0.6327946722068599
n = 2528244
# lenopenreadlines
Elapsed time : 0.655304473598555
n = 2528244
# lenpd
Elapsed time : 0.7561274056295324
n = 2528244
# csvreaderfor
Elapsed time : 1.5571560935772661
n = 2528244
# openenum
Elapsed time : 0.773000013928679
n = 2528244
Kết quả là dưới đây.
Tóm lại, pandas as pd
5 là nhanh nhất. Nhưng có thể không có sự khác biệt đáng kể so với pandas as pd
6.