如何从具有给定参数的 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...
我想从给定的 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...