Manera de leer las primeras líneas para el dataframe pandas

¿Existe una forma integrada de usar read_csv para leer solo las primeras n líneas de un archivo sin saber la longitud de las líneas antes de tiempo? Tengo un archivo grande que toma mucho tiempo para leer, y ocasionalmente solo quiero usar la primera, digamos, 20 líneas para obtener una muestra (y prefiero no cargar todo el material y tomar la cabeza).

Si supiera el número total de líneas, podría hacer algo como footer_lines = total_lines - n y pasar esto a la palabra clave skipfooter arg. Mi solución actual es agarrar manualmente las primeras n líneas con python y StringIO it to 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)) 

No es tan malo, pero ¿hay una forma más concisa, ‘pandásica’ (?) De hacerlo con palabras clave o algo así?

Creo que puedes usar el parámetro nrows . De los documentos :

 nrows : int, default None Number of rows of file to read. Useful for reading pieces of large files 

Lo que parece funcionar. Usando uno de los archivos de prueba grandes estándar (988504479 bytes, 5344499 líneas):

 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 

Aquí está la opción

 df = pd.read_csv("file.csv") df.head() 

Abre un csv y lee las primeras 5 filas.