我试图只获得Python中有超过400万行的csv.gz文件的前100行.我还想了解每列的#列和标题的信息.我怎样才能做到这一点?
我查看了python:从压缩文本文件中读取行以弄清楚如何打开文件,但我正在努力弄清楚如何实际打印前100行并获取列中信息的一些元数据.
我在python中找到了这个读取文件的前N行,但不知道如何将它与打开csv.gz文件结合并读取它而不保存未压缩的csv文件.
我写了这段代码:
import gzip
import csv
import json
import pandas as pd
df = pd.read_csv('google-us-data.csv.gz', compression='gzip', header=0, sep=' ', quotechar='"', error_bad_lines=False)
for i in range (100):
print df.next()
Run Code Online (Sandbox Code Playgroud)
我是Python的新手,我不理解结果.我确定我的代码是错的,我一直在尝试调试它,但我不知道要查看哪些文档.
我得到了这些结果(并且它一直在控制台上 - 这是一个摘录):
Skipping line 63: expected 3 fields, saw 7
Skipping line 64: expected 3 fields, saw 7
Skipping line 65: expected 3 fields, saw 7
Skipping line 66: expected 3 fields, saw 7
Skipping line 67: expected 3 fields, saw 7
Skipping line 68: expected 3 fields, saw 7
Skipping line 69: expected 3 fields, saw 7
Skipping line 70: expected 3 fields, saw 7
Skipping line 71: expected 3 fields, saw 7
Skipping line 72: expected 3 fields, saw 7
Run Code Online (Sandbox Code Playgroud)
HEA*_*0NE 13
差不多就是你已经做了,但read_csv也有nrows在那里你可以指定你的数据集所需的行数.
此外,为了防止您遇到的错误,您可以设置error_bad_lines为False.你会仍然得到警告(如果你烦恼,设定warn_bad_lines到False为好).这些表示您的数据集填写方式不一致.
import pandas as pd
data = pd.read_csv('google-us-data.csv.gz', nrows=100, compression='gzip',
error_bad_lines=False)
print(data)
Run Code Online (Sandbox Code Playgroud)
您可以轻松地使用csv内置库执行类似的操作,但它需要一个for循环来迭代数据,如其他示例所示.
我认为你可以做这样的事情(来自 gzip 模块示例)
import gzip
with gzip.open('/home/joe/file.txt.gz', 'rb') as f:
header = f.readline()
# Read lines any way you want now.
Run Code Online (Sandbox Code Playgroud)