0

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

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,,

谢谢

4

2 回答 2

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()
于 2013-09-02T15:18:14.467 回答
0

从您的问题中不清楚您是想从列中删除值(这对我来说听起来不对)还是从所有列中删除。无论哪种方式,最好使用genfromtxt. 我建议您阅读这个奇妙的指南只是阅读文档

在那里你会找到一个参数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]]

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

于 2013-09-02T14:16:56.120 回答