我试图只获得Python中有超过400万行的csv.gz文件的前100行。我还想了解每列的#列和标题的信息。我怎样才能做到这一点?
我查看了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
答案 0 :(得分:6)
除了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
内置库执行类似操作,但它需要import { Directive, ElementRef, Renderer} from "@angular/core";
@Directive({
selector: "[Focus]"
})
export class myFocus {
constructor(private _el: ElementRef, private renderer: Renderer) {
this.renderer.invokeElementMethod(this._el.nativeElement, 'focus');
}
}
循环来迭代数据,其他示例中已显示。
答案 1 :(得分:1)
我认为你可以做这样的事情(来自gzip模块examples)
import gzip
with gzip.open('/home/joe/file.txt.gz', 'rb') as f:
header = f.readline()
# Read lines any way you want now.
答案 2 :(得分:1)
您链接的第一个答案建议使用gzip.GzipFile
- 这会为您提供一个类似文件的对象,可以动态解压缩。
现在你只需要一些方法来解析类文件对象中的csv数据......比如csv.reader。
csv.reader
对象会显示一个字段名列表,因此您可以知道列,它们的名称以及有多少列。
然后你需要获得前100个csv行对象,这些对象与你链接的第二个问题完全一样,并且这100个对象中的每一个都是一个字段列表。
到目前为止,除了了解library index中列出的csv模块的存在外,您的链接问题都涵盖了这一点。
答案 3 :(得分:1)
您的代码没问题;
pandas read_csv
warn_bad_lines :布尔值,默认为True
If error_bad_lines is False, and warn_bad_lines is True, a warning for each “bad line” will be output. (Only valid with C parser).