javascript

java

python

c#

node.js

reactjs

android

c++

php

html

jquery

ruby-on-rails

css

git

ios

.net

sql

c

string

<img src="//i.stack.imgur.com/bk9VA.png" alt="" class="sponsor-tag-img" width="18" height="16"/>android

如何*实际*读取TensorFlow中的CSV数据?

我对TensorFlow的世界相对较新,并且非常困惑于你如何将CSV数据实际读入TensorFlow中的可用示例/标签张量。 TensorFlow教程中有关读取CSV数据的示例相当分散,只能让您了解能够训练CSV数据的方法。

这是我根据CSV教程编写的代码:

from __future__ import print_function
import tensorflow as tf

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

filename = "csv_test_data.csv"

# setup text reader
file_length = file_len(filename)
filename_queue = tf.train.string_input_producer([filename])
reader = tf.TextLineReader(skip_header_lines=1)
_, csv_row = reader.read(filename_queue)

# setup CSV decoding
record_defaults = [[0],[0],[0],[0],[0]]
col1,col2,col3,col4,col5 = tf.decode_csv(csv_row, record_defaults=record_defaults)

# turn features back into a tensor
features = tf.stack([col1,col2,col3,col4])

print("loading, " + str(file_length) + " line(s)\n")
with tf.Session() as sess:
  tf.initialize_all_variables().run()

  # start populating filename queue
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)

  for i in range(file_length):
    # retrieve a single instance
    example, label = sess.run([features, col5])
    print(example, label)

  coord.request_stop()
  coord.join(threads)
  print("\ndone loading")

以下是我正在加载的CSV文件的简短示例 - 非常基本的数据 - 4个要素列和1个标签列:

0,0,0,0,0
0,15,0,0,0
0,30,0,0,0
0,45,0,0,0

上面的所有代码都是逐个打印CSV文件中的每个示例,虽然很好,但对于培训来说却非常无用。

我在这里努力的是你如何将这些逐个加载的单个示例转换为训练数据集。 例如,这是我在Udacity深度学习课程中学习的笔记本。 我基本上想要获取我正在加载的CSV数据,并将其放入类似train_dataset和train_labels的内容:

def reformat(dataset, labels):
  dataset = dataset.reshape((-1, image_size * image_size)).astype(np.float32)
  # Map 2 to [0.0, 1.0, 0.0 ...], 3 to [0.0, 0.0, 1.0 ...]
  labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)
  return dataset, labels
train_dataset, train_labels = reformat(train_dataset, train_labels)
valid_dataset, valid_labels = reformat(valid_dataset, valid_labels)
test_dataset, test_labels = reformat(test_dataset, test_labels)
print('Training set', train_dataset.shape, train_labels.shape)
print('Validation set', valid_dataset.shape, valid_labels.shape)
print('Test set', test_dataset.shape, test_labels.shape)

我尝试过使用for i in range(file_length),但是它只是莫名其妙地挂起:

  for i in range(file_length):
    # retrieve a single instance
    example, label = sess.run([features, colRelevant])
    example_batch, label_batch = tf.train.shuffle_batch([example, label], batch_size=file_length, capacity=file_length, min_after_dequeue=10000)
    print(example, label)

总结一下,这是我的问题:

  • 我对这个过程缺少什么?
    • 感觉有一些关键如何正确构建输入管道的关键直觉。
  • 有没有办法避免知道CSV文件的长度?
    • 要知道要处理的行数(上面的代码为for i in range(file_length)),感觉相当不优雅

编辑:一旦雅罗斯拉夫指出我可能在这里混合了命令性和图形构造部分,它就开始变得更加清晰。 我能够将以下代码整合在一起,我认为这些代码更接近于从CSV训练模型时通常所做的(不包括任何模型训练代码):

from __future__ import print_function
import numpy as np
import tensorflow as tf
import math as math
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('dataset')
args = parser.parse_args()

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

def read_from_csv(filename_queue):
  reader = tf.TextLineReader(skip_header_lines=1)
  _, csv_row = reader.read(filename_queue)
  record_defaults = [[0],[0],[0],[0],[0]]
  colHour,colQuarter,colAction,colUser,colLabel = tf.decode_csv(csv_row, record_defaults=record_defaults)
  features = tf.stack([colHour,colQuarter,colAction,colUser])  
  label = tf.stack([colLabel])  
  return features, label

def input_pipeline(batch_size, num_epochs=None):
  filename_queue = tf.train.string_input_producer([args.dataset], num_epochs=num_epochs, shuffle=True)  
  example, label = read_from_csv(filename_queue)
  min_after_dequeue = 10000
  capacity = min_after_dequeue + 3 * batch_size
  example_batch, label_batch = tf.train.shuffle_batch(
      [example, label], batch_size=batch_size, capacity=capacity,
      min_after_dequeue=min_after_dequeue)
  return example_batch, label_batch

file_length = file_len(args.dataset) - 1
examples, labels = input_pipeline(file_length, 1)

with tf.Session() as sess:
  tf.initialize_all_variables().run()

  # start populating filename queue
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)

  try:
    while not coord.should_stop():
      example_batch, label_batch = sess.run([examples, labels])
      print(example_batch)
  except tf.errors.OutOfRangeError:
    print('Done training, epoch reached')
  finally:
    coord.request_stop()

  coord.join(threads) 
trans by 2019-09-18T18:41:03Z

r - 在数据框架的选定列中包含NA(缺失)值的行的子集

我们有一个CSV文件的数据框。 数据框NA具有包含观察值的列和包含测量日期的列(NULL)。 如果未记录日期,则CSV文件包含值new_DF<-subset(DF,DF$Var2=="NULL"),用于缺少数据。

Var1  Var2 
10   2010/01/01
20   NA
30   2010/03/01

我们希望使用subset命令来定义新的数据帧NA,使其仅包含来自列(new_DF<-subset(DF,DF$Var2=="NULL"))的值为NULL的行。 在给出的示例中,只有第2行将包含在新的DF中。

命令

new_DF<-subset(DF,DF$Var2=="NA") 

不起作用,结果数据框没有行条目。

如果在原始CSV文件中将值NANULL交换,则相同的命令将生成所需的结果:new_DF<-subset(DF,DF$Var2=="NULL")

如果对于字符串,原始CSV文件中提供了值NA,我该如何使此方法有效?

trans by 2019-09-17T14:50:41Z

python - (unicode error)'unicodeescape'编解码器无法解码2-3位的字节:截断\ UXXXXXXXX escap

我正在尝试将.csv文件读入Python(Spyder)但我一直收到错误。 我的代码:

import csv

data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)  
print(data)

我收到以下错误:

SyntaxError :( unicode error)'unicodeescape'编解码器无法解码字节   在位置2-3:截断\ UXXXXXXXX转义

我试图用\替换\或用/和我试图在“C ..之前放一个r ..但所有这些东西都不起作用。

trans by 2019-09-15T05:13:06Z

修剪一个巨大的(3.5 GB)csv文件以读入R

所以我有一个数据文件(分号分隔),它有很多细节和不完整的行(导致Access和SQL扼流)。 它的县级数据集分为段,子段和子子段(总共约200个因子),为期40年。 简而言之,它是巨大的,如果我试着简单地阅读它,它就不适应内存。

所以我的问题是,鉴于我想要所有的县,但只有一年(而且只是最高级别的细分......最终导致大约100,000行),最好的方法是什么 汇总到R?

目前我正试图用Python来消除不相关的年份,通过一次读取和操作一行来绕过文件大小限制,但我更喜欢只有R的解决方案(CRAN包可以)。 有没有类似的方法在R中一次读取一个文件?

任何想法将不胜感激。

更新:

  • 约束
    • 需要使用我的机器,所以没有EC2实例
    • 仅作为R-only。 在这种情况下速度和资源不是问题......只要我的机器没有爆炸......
    • 如下所示,数据包含混合类型,我需要稍后进行操作
  • 数据
    • 数据为3.5GB,大约850万行和17列
    • 几千行(~2k)格式错误,只有一列而不是17列
      • 这些完全不重要,可以放弃
    • 我只需要这个文件中的~100,000行(见下文)

数据示例:

County; State; Year; Quarter; Segment; Sub-Segment; Sub-Sub-Segment; GDP; ...
Ada County;NC;2009;4;FIRE;Financial;Banks;80.1; ...
Ada County;NC;2010;1;FIRE;Financial;Banks;82.5; ...
NC  [Malformed row]
[8.5 Mill rows]

我想砍掉一些列并从40个可用年份中挑选两个(2009-2010从1980年到2020年),这样数据可以适用于R:

County; State; Year; Quarter; Segment; GDP; ...
Ada County;NC;2009;4;FIRE;80.1; ...
Ada County;NC;2010;1;FIRE;82.5; ...
[~200,000 rows]

结果:

在修改了所有建议后,我认为JD和Marek建议的readLines效果最好。 我给了Marek支票,因为他提供了一个示例实施。

我在这里为我的最终答案复制了一个略微改编的Marek实现版本,使用strsplit和cat来保留我想要的列。

还应该注意到,这比Python效率低得多......因为,Python在5分钟内通过3.5GB文件,而R需要大约60 ...但如果你只有R,那么这就是票。

## Open a connection separately to hold the cursor position
file.in <- file('bad_data.txt', 'rt')
file.out <- file('chopped_data.txt', 'wt')
line <- readLines(file.in, n=1)
line.split <- strsplit(line, ';')
# Stitching together only the columns we want
cat(line.split[[1]][1:5], line.split[[1]][8], sep = ';', file = file.out, fill = TRUE)
## Use a loop to read in the rest of the lines
line <- readLines(file.in, n=1)
while (length(line)) {
  line.split <- strsplit(line, ';')
  if (length(line.split[[1]]) > 1) {
    if (line.split[[1]][3] == '2009') {
        cat(line.split[[1]][1:5], line.split[[1]][8], sep = ';', file = file.out, fill = TRUE)
    }
  }
  line<- readLines(file.in, n=1)
}
close(file.in)
close(file.out)

方法失败:

  • sqldf
    • 如果数据格式正确,这绝对是我将来用于此类问题的方法。 但是,如果不是,则SQLite会窒息。
  • MapReduce的
    • 说实话,文档在这个问题上对我进行了恐吓,所以我没有尝试过。 它看起来像是需要对象在内存中,如果是这样的话,这将打败这一点。
  • bigmemory
    • 这种方法与数据干净地链接,但它一次只能处理一种类型。 结果,当放入big.table时,我的所有角色向量都会丢失。 如果我需要为未来设计大型数据集,我会考虑仅使用数字来保持此选项的活跃性。
  • 扫描
    • 扫描似乎与大内存有类似的类型问题,但具有readLines的所有机制。 简而言之,这次只是不适合这个法案。
trans by 2019-09-14T22:25:24Z

python - 来自你的熊猫read_csv

我正在使用Python 3.4和IPython,并具有以下代码。 我无法从给定的URL读取csv文件:

import pandas as pd
import requests

url="https://github.com/cs109/2014_data/blob/master/countries.csv"
s=requests.get(url).content
c=pd.read_csv(s)

我有以下错误

“预期的文件路径名或类文件对象,得到类型”

我怎样才能解决这个问题?

trans by 2019-09-13T09:03:12Z

Python CSV错误:行包含NULL

我正在使用一些CSV文件,使用以下代码:

reader = csv.reader(open(filepath, "rU"))
try:
    for row in reader:
        print 'Row read successfully!', row
except csv.Error, e:
    sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))

一个文件抛出此错误:

file my.csv, line 1: line contains NULL byte

我能做什么? 谷歌似乎暗示它可能是一个Excel文件被不正当地保存为.csv。 有什么方法可以解决Python中的这个问题吗?

==更新==

按照下面@ JohnMachin的评论,我尝试将这些行添加到我的脚本中:

print repr(open(filepath, 'rb').read(200)) # dump 1st 200 bytes of file
data = open(filepath, 'rb').read()
print data.find('\x00')
print data.count('\x00')

这是我得到的输出:

'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\ .... <snip>
8
13834

所以该文件确实包含NUL字节。

trans by 2019-09-12T07:10:32Z

node.js - 库建议:NodeJs读取csv fi

使用nodejs,我想解析10000个记录的.csv文件,并对每一行进行一些操作。 我尝试使用[http://www.adaltas.com/projects/node-csv。]我不能让它在每一行暂停。 这只是读取所有10000条记录。 我需要做以下事情

  1. 逐行读取csv
  2. 在每一行上执行耗时的操作
  3. 转到下一行

任何人都可以在这里建议任何其他想法?

trans by 2019-09-12T05:16:35Z

将mysql数据库从命令lin转储到纯文本(CSV)备份

我想避免使用mysqldump,因为它以一种只便于mysql读取的形式输出。 CSV似乎更通用(每个表一个文件很好)。 但如果mysqldump有优势,我全都耳朵。 另外,我想从命令行(linux)运行一些东西。 如果这是一个mysql脚本,指向如何制作这样的东西会有所帮助。

trans by 2019-09-11T11:32:04Z

utf 8 - 使用Python读取UTF8 CSV文件

我正在尝试使用Python(只有法语和/或西班牙语字符)读取带有重音字符的CSV文件。 基于csvreader的Python 2.5文档([http://docs.python.org/library/csv.html),]我想出了以下代码来读取CSV文件,因为csvreader只支持ASCII。

def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
    # csv.py doesn't do Unicode; encode temporarily as UTF-8:
    csv_reader = csv.reader(utf_8_encoder(unicode_csv_data),
                            dialect=dialect, **kwargs)
    for row in csv_reader:
        # decode UTF-8 back to Unicode, cell by cell:
        yield [unicode(cell, 'utf-8') for cell in row]

def utf_8_encoder(unicode_csv_data):
    for line in unicode_csv_data:
        yield line.encode('utf-8')

filename = 'output.csv'
reader = unicode_csv_reader(open(filename))
try:
    products = []
    for field1, field2, field3 in reader:
        ...

以下是我试图阅读的CSV文件的摘录:

0665000FS10120684,SD1200IS,Appareil photo numérique PowerShot de 10 Mpx de Canon avec trépied (SD1200IS) - Bleu
0665000FS10120689,SD1200IS,Appareil photo numérique PowerShot de 10 Mpx de Canon avec trépied (SD1200IS) - Gris
0665000FS10120687,SD1200IS,Appareil photo numérique PowerShot de 10 Mpx de Canon avec trépied (SD1200IS) - Vert
...

即使我尝试编码/解码为UTF-8,我仍然得到以下异常:

Traceback (most recent call last):
  File ".\Test.py", line 53, in <module>
    for field1, field2, field3 in reader:
  File ".\Test.py", line 40, in unicode_csv_reader
    for row in csv_reader:
  File ".\Test.py", line 46, in utf_8_encoder
    yield line.encode('utf-8', 'ignore')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 68: ordinal not in range(128)

我该如何解决?

trans by 2019-09-09T17:00:34Z

为什么在使用Python中的Dictwriter输出时,CSV文件在每个数据行之间包含一个空行

这个问题在这里已有答案:

  • 用Python编写的CSV文件在每行之间都有空行                                     8个答案

我正在使用DictWriter将字典中的数据输出到csv文件。 为什么CSV文件在每条数据线之间都有一个空行? 这不是一个大问题,但我的数据集很大,不适合一个csv文件,因为它有太多的行,因为“双倍间距”使文件中的行数加倍。

我写入字典的代码是:

headers=['id', 'year', 'activity', 'lineitem', 'datum']
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', fieldnames=headers)
output.writerow(dict((fn,fn) for fn in headers))
for row in rows:
    output.writerow(row)
trans by 2019-09-09T16:46:17Z

使用Python将CSV文件导入sqlite3数据库表

我有一个CSV文件,我想使用Python将此文件批量导入我的sqlite3数据库。 命令是“.import .....”。 但它似乎无法像这样工作。 谁能给我一个如何在sqlite3中做到这一点的例子? 我正在使用Windows以防万一。谢谢

trans by 2019-09-08T13:35:25Z

macos - 使用CSV Django modu以通用换行模式打开文件

我试图访问Django中的model.filefield,使用csv模块解析Python中的CSV文件。 它在Windows上工作,但在Mac上它给了我这个:

Exception Type: Error

Exception Value: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

这是代码:

myfile = customerbulk.objects.all()[0].fileup

mydata = csv.reader(myfile)
    for email,mobile,name,civilid in mydata:
        print email,mobile,name,civilid
trans by 2019-09-03T11:21:15Z

MYSQL使用LOAD DATA INFILE从csv导入数据

我将一些包含20000行的数据从CSV文件导入到Mysql中。

CSV中的列与MySQL表的列的顺序不同。 如何自动分配与Mysql表列对应的列?

当我执行

LOAD DATA INFILE'abc.csv' INTO TABLE abc

此查询将所有数据添加到第一列。

请建议将数据导入Mysql的自动语法。

trans by 2019-08-27T07:17:34Z

用于C#的CSV解析器/阅读器?

在某些自由许可下,是否有一个很好的免费实施CSV解析器? SuperCSV for Java的一些对应物,也许是一个端口?

trans by 2019-08-25T10:11:33Z

windows - 在命令行上将XLS转换为CSV

如何在Windows命令行上将XLS文件转换为CSV文件。

该计算机已安装Microsoft Office 2000。 如果不能使用Microsoft Office,我可以安装OpenOffice。

trans by 2019-08-20T04:40:49Z

python - 处理CSV数据时,如何忽略第一行数据?

我要求Python打印一列CSV数据中的最小数字,但最上面一行是列号,我不希望Python考虑到最上面一行。 如何确保Python忽略第一行?

这是到目前为止的代码:

import csv

with open('all16.csv', 'rb') as inf:
    incsv = csv.reader(inf)
    column = 1                
    datatype = float          
    data = (datatype(column) for row in incsv)   
    least_value = min(data)

print least_value

你能解释一下你在做什么,而不仅仅是给出代码吗? 我对Python非常陌生,并希望确保我理解一切。

trans by 2019-08-12T20:53:30Z

格式化 - CSV / Excel的最佳时间戳格式?

我正在写一个CSV文件。 我需要编写至少精确到秒的时间戳,最好是毫秒。 什么是CSV文件中时间戳的最佳格式,以便Excel可以用最少的用户干预准确无误地解析它们?

trans by 2019-08-11T00:10:38Z

如何在R中导入CSV文件?

我的工作站中有一个.csv文件。 如何在R中打开该文件并进行统计计算?

trans by 2019-08-10T14:17:02Z

如何使用PHP解析CSV文件

这个问题在这里已有答案:

  • 如何从PHP中的csv文件中提取数据                                     9个答案

假设我有一个.csv文件,其中包含以下内容:

 "text, with commas","another text",123,"text",5; 
 "some    without commas","another text",123,"text";
 "some text with  commas or no",,123,"text"; 

如何通过PHP解析内容?

trans by 2019-08-08T02:57:07Z

将CSV导入mysql选项卡

将csv文件上传到mysql表的最佳/最快方法是什么? 我想将第一行数据用作列名。

发现这个:

如何将CSV文件导入MySQL表

但唯一的答案是使用GUI而不是shell?

trans by 2019-08-07T06:27:30Z

1 2 3 4 5 6 下一页 共6页