the*_*eau 5 python chunks dataframe pandas
我正在使用chuncksize(pandas DataFrame)读取一个大的csv文件,就像这样
reader = pd.read_csv('log_file.csv', low_memory = False, chunksize = 4e7)
Run Code Online (Sandbox Code Playgroud)
我知道我可以只计算它在文件中读取的块数,但我想自动执行此操作并将块数保存到变量中,就像这样(以伪代码)
number_of_chuncks = countChuncks(reader)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
您可以使用生成器表达式来迭代 reader(定义 chunksize 时由 read_csv 返回的 TextFileReader),并为每次迭代求和 1:
number_of_chunks = sum(1 for chunk in reader)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用生成器表达式来计算文件中的行数(与第一个选项的逻辑类似,但迭代文件的行),然后将该数字除以块大小并将结果四舍五入(使用数学.ceil)
import math
number_of_rows = sum(1 for row in open('log_file.csv', 'r'))
number_of_chunks = math.ceil(number_of_rows/chunksize)
Run Code Online (Sandbox Code Playgroud)
或者
import math
number_of_chunks = math.ceil(sum(1 for row in open('log_file.csv', 'r'))/chunksize)
Run Code Online (Sandbox Code Playgroud)
在我的测试中,第二个解决方案显示出比第一个解决方案更好的性能。
| 归档时间: |
|
| 查看次数: |
2933 次 |
| 最近记录: |