从CSV中绘制包含空值的列 - python

时间:2013-04-08 22:27:17

标签: python csv null

我是python的新手,我遇到了很多问题。 我正在尝试使用包含许多空值的csv文件中的两列来创建图形。有没有办法将空值转换为零或删除某些列中包含空值的行?

1 个答案:

答案 0 :(得分:1)

您提出的问题未得到详细说明,但我认为如果我们选择一个具体的例子,您应该能够弄清楚如何使其适应您的实际使用案例。

所以,假设您的值都是float的字符串表示形式,或者是表示null的空字符串:

A,B
1.0,2.0
2.0,
,3.0
4.0,5.0

让我们假设您正在使用csv.reader阅读此内容,并且您使用do_stuff_with函数逐个显式处理这些行:

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        a, b = map(float, row)
        do_stuff_with(a, b)

现在,如果要将空值视为0.0,则只需将float替换为对非空float(x)返回x的函数,并0.0 } for empty x

def nullable_float(x):
    return float(x) if x else 0.0

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        a, b = map(nullable_float, row)
        do_stuff_with(a, b)

如果要跳过列B中包含空值的任何行,只需在执行转换之前检查B列:

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        if not row[1]:
            continue
        a, b = map(nullable_float, row)
        do_stuff_with(a, b)