-4

我正在使用 pandas 来获取 Text 类型数据的计数并找出给定数据中的前 5 个。

输入文件如下:

Gears of war 3
Gears of war
Assassin creed
.......
.......
Crysis 2
Gears of war3
Sims

我的输出如下:

{
    'Gears of War 3': 6,
    'Batman': 5,
    'gears of war 3': 4,
    'Rocksmith': 5,
    'nan': 32870
}

我希望我的代码跳过对 csv 文件中的 nan 值进行计数。

我的代码如下:

data = pandas.read_csv('D:\my_file.csv')

for colname, dtype in data.dtypes.to_dict().iteritems():
    if dtype == 'object':
        print colname
        count = Counter(data[colname])
        d = dict((str(k), v) for k, v in count.iteritems())
        f = dict(sorted(d.iteritems(), key=lambda item: item[1], reverse = True)[:5])
4

2 回答 2

1

您可以nan从类字典对象的 Counter 实例中删除项目:

from numpy import nan
del count[nan]

顺便说一句,您可以使用Counter.most_common方法:

f = count.most_common(5)
于 2012-10-23T10:58:53.573 回答
0

用于value_counts()计算非Nan值:

        one       two     three
a  0.196508 -0.465768 -0.710062
b       NaN       NaN       NaN
c  0.532602  1.835499  0.465047
d       NaN       NaN       NaN
e  0.175336 -0.471934 -1.517812
f -2.392756 -0.021330 -0.239647
g       NaN       NaN       NaN
h -0.612554  0.238613 -1.060184

df2['one'].value_counts()

 0.532602    1
 0.196508    1
 0.175336    1
-0.612554    1
-2.392756    1
于 2012-10-23T11:04:15.520 回答