我试图只获取 csv.gz 文件的前 100 行,该文件在 Python 中有超过 400 万行。我还想要有关列数和每个列标题的信息。我怎样才能做到这一点?
我看了python: read lines from compressed text files弄清楚如何打开文件,但我正在努力弄清楚如何实际打印前 100 行并获取有关列中信息的一些元数据。
我找到了这个 Read first N lines of a file in python但不确定如何将其与打开 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()
我是 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
最佳答案
除了 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)
您可以使用 csv
内置库轻松地执行类似的操作,但它需要一个 for
循环来遍历数据,如其他示例所示.
关于python - 在 Python 中打开一个 csv.gz 文件并打印前 100 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645804/