如何删除csv_file中的缺失值

时间:2013-09-02 13:22:22

标签: python csv python-2.7 numpy pandas

如何在a,b,c ...中删除csv_file中的缺失值: 这是我的编码:

import numpy as np
FNAME ="C:/Users/lenovo/Desktop/table.csv"

my_data = np.genfromtxt (FNAME, delimiter = ',')
a= my_data [:,0]
b= my_data [:,1]
c= my_data [:,2]
d=my_data[:,3]
e= my_data[:,4]
f= my_data[:,5]
g= my_data[:,6]

我的csv_file的摘录:

0,1,135,3,82,4,1
0,1,98,5,82,3,1
21175,1,98,5,82,3,1
9147,2,80,5,82,2,2
1829,2,80,5,82,2,2
3659,2,80,5,82,2,2
10976,2,80,5,82,2,2
0,2,40,2,24,1,2
0,2,40,2,24,1,2
29710,2,40,2,24,1,2
0,1,90,3,31,2,2
0,1,90,3,31,2,2
11434,1,90,3,31,2,2
0,2,85,4,72,3,2
6039,2,85,4,72,3,2
34758,1,100,,52,,
0,1,100,,52,,

感谢名单

2 个答案:

答案 0 :(得分:1)

Pandas有一个内置的方法:

from pandas import DataFrame, read_csv

FNAME ="C:/Users/lenovo/Desktop/table.csv"
df = read_csv(FNAME, header=None, index_col=None)
print df.dropna()

答案 1 :(得分:0)

从您的问题中不清楚您是要删除列中的值(对我来说听起来不对)还是从所有列中删除。无论哪种方式,最好使用genfromtxt的力量。我建议您阅读this marvellous guidejust the docs

在那里,您将找到一个参数missing values,您可以指定在导入时如何处理此类事件。有许多不同的方法可以做到这一点,但一个例子可能是使用genfromtxtnan替换丢失的浮点数的事实。检查连续出现nan并忽略是否为真:

import numpy as np
from StringIO import StringIO

data = """
0,4,1
34758,1,100
52,,
"""

my_data = np.genfromtxt(StringIO(data), delimiter=",")

index_to_use=[]
for i, row in enumerate(my_data):
    if True not in np.isnan(row):
        index_to_use.append(i)

print my_data[index_to_use]

>>>
[[  0.00000000e+00   4.00000000e+00   1.00000000e+00]
[  3.47580000e+04   1.00000000e+00   1.00000000e+02]]

为了便于阅读,我减少了您的数据样本。