python - 读取 Pandas 数据框前几行的方法

标签 python pandas csv dataframe

有没有一种内置方法可以使用 read_csv 来只读取文件的前 n 行,而无需提前知道行的长度?我有一个需要很长时间才能读取的大文件,并且偶尔只想使用第一行,比如 20 行来获取它的样本(并且不想加载完整的东西并占据它的头部)。

如果我知道总行数,我可以执行 footer_lines = total_lines - n 之类的操作并将其传递给 skipfooter 关键字 arg。我目前的解决方案是用 python 和 StringIO 手动抓取第一行 n 到 pandas:

import pandas as pd
from StringIO import StringIO

n = 20
with open('big_file.csv', 'r') as f:
    head = ''.join(f.readlines(n))

df = pd.read_csv(StringIO(head))

这还不错,但是有没有更简洁的“pandasic”(?)方法来使用关键字或其他东西?

最佳答案

我认为您可以使用 nrows 参数。来自 the docs :

nrows : int, default None

    Number of rows of file to read. Useful for reading pieces of large files

这似乎有效。使用标准的大型测试文件之一(988504479 字节,5344499 行):

In [1]: import pandas as pd

In [2]: time z = pd.read_csv("P00000001-ALL.csv", nrows=20)
CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s
Wall time: 0.00 s

In [3]: len(z)
Out[3]: 20

In [4]: time z = pd.read_csv("P00000001-ALL.csv")
CPU times: user 27.63 s, sys: 1.92 s, total: 29.55 s
Wall time: 30.23 s

关于python - 读取 Pandas 数据框前几行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008970/

相关文章:

python - 方法解析顺序 (MRO) 如何在此 Python 代码中工作

python - 从图像中删除线条用于数字检测 python 的笔记本

python - 集群质心之间的加权网络 - Python

Python 3.5 CSV.reader 不返回任何行

r - 如何为关联规则数据创建项目频率图?通过转换为数据框或数字?

node.js - 我需要远程调用 mongoexport 并从 node.js 获取结果

java - 从 Java 角度到 Python 的基本对象实例化

python - 使用 macOs Sierra 安装 pyaudio

python-3.x - 从一个日期时间类型的数据框列创建年、月、日

python - 将图像数据从 pandas 加载到 pytorch