如何从具有给定参数的 csv 文件中提取特定数据?

how to extract specific data from a csv file with given parameters?

我想从给定的 csv 文件中提取中性词(到单独的 .txt 文件),但我对 python 还很陌生,对文件处理了解不多。我找不到中性词数据集,但在这里和那里搜索后,这就是我能找到的。

这是我想从中提取数据的 Gtihub 项目(以防万一有人需要知道):hoffman-prezioso-projects/Amazon_Review_Sentiment_Analysis

Neutral Words
Word     Sentiment Score
a        0.0125160264947
the      0.00423728459134
it      -0.0294755274737
and      0.0810574365028
an       0.0318918766949
or      -0.274298468178
normal  -0.0270787859177

所以基本上我只想从 csv 中提取数值为 0.something.

的那些单词(文本)

像这样使用pandas:

import pandas
df = pandas.read_csv("yourfile.csv")
df.columns = ['word', 'sentiment']

按情绪选词:

positive = df[df['sentiment'] > 0]['word']
negative = df[df['sentiment'] < 0]['word']
neutral = df[df['sentiment'] == 0]['word']

即使不使用任何库,使用您正在使用的 csv 也相当容易。

首先打开文件(我假设你已经把路径保存在变量filename中),然后用readlines()函数读取文件,然后根据过滤掉你给的条件。

with open(filename, 'r') as csv:                         # Open the file for reading
    rows = [line.split(',') for line in csv.readlines()] # Read each the file in lines, and split on commas
    filter = [line[0] for line in rows if abs(float(line[1])) < 1]   
                                                         # Filter out all lines where the second value is not equal to 1

现在这是公认的答案,所以我要添加免责声明。出于多种原因,为什么不应该将此代码应用到其他 CSV 文件中。

  • 它读取内存中的整个 CSV
  • 它不考虑例如引用

对于非常简单的 CSV 是可以接受的,但如果您不能确定 CSV 不会破坏此代码,则此处的其他答案会更好。

如果您不想使用任何额外的库,您可以尝试使用 csv 模块。请注意,delimiter='\t' 可能与您的情况不同。

import csv

f = open('name.txt', 'r')
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
for row in reader:
   if(float(row[1]) > 0.0):
      print(row[0] + ' ' row[1])

这是一种仅使用普通库而不是将整个文件保存在内存中的方法

import csv

def get_vals(filename):
    with open(filename, 'rb') as fin:
        reader = csv.reader(fin)
        for line in reader:
            if line[-1] <= 0:
                yield line[0]

words = get_vals(filename)

for word in words:
    do stuff...