python - 在 Python 中打开一个 csv.gz 文件并打印前 100 行

标签 python csv

我试图只获取 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/

相关文章:

python - 使用 Python 读取文本文件并分类到字典中时遇到问题

python - 迭代多个数据帧并根据特定列执行计算

python - 在 gnuplot 中绘制 pm3d map 的 python 类比是什么?

python - 为 CSV 文件附加标题?

python - 如何在Python中将CSV文件转换为字典列表

python - 如何从 google places api for python 中的地点 id 获取地点详细信息

python - 用 PySal 计算 Moran's I?

Python 写入 csv 忽略逗号

Java - CSVReader 在值中用逗号正确分割

javascript - 在 highcharter 中包含导出 csv