473,385 Members | 1,893 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

very high-level IO functions?

Hi,

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column. write.table can
do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable can
automatically build a MySQL table and write a table of R data
into it.

Is there any python packages do similar things?
-York
Sep 19 '05 #1
8 2160
York

Short answer: yes

We use python and R at work, and in general you will find python syntax a
little cleaner for functionality they have in common. R is better for
some of the more hard-wired stats stuff, though.

On Mon, 19 Sep 2005 20:04:37 +0200, York <yo*******@gmail.com> wrote:
Hi,

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column. write.table can
do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable can
automatically build a MySQL table and write a table of R data
into it.

Is there any python packages do similar things?
-York


Sep 19 '05 #2
While it may "attempt" to recognize the types, it in fact cannot
be more correct than the programmer. Example:

data="""0X1E04 111"""

That "looks" lile a hex and an int. But wait. What if it is
instead two strings?

In Python you can easily write a class with a interator that can
read the data from the file/table and return the PROPER data types
as lists, tuples, or dictionaries that are easy to manipulate.

-Larry Bates

York wrote:
Hi,

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column. write.table can
do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable can
automatically build a MySQL table and write a table of R data into
it.

Is there any python packages do similar things?
-York

Sep 19 '05 #3
Caleb Hattingh wrote:
York

Short answer: yes

Brilliant! and what are they?
We use python and R at work, and in general you will find python syntax
a little cleaner for functionality they have in common. R is better
for some of the more hard-wired stats stuff, though.
I love python. However, as a biologist, I like some high-levels
functions in R. I don't want to spend my time on parse a data file. Then
in my python script, I call R to read data file and write them into an
MySQL table. If python can do this easily, I don't need R at all.

Cheers,

-York


On Mon, 19 Sep 2005 20:04:37 +0200, York <yo*******@gmail.com> wrote:
Hi,

R language has very high-level IO functions, its read.table can read
a total .csv file and recogonize the types of each column.
write.table can do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable
can automatically build a MySQL table and write a table of R
data into it.

Is there any python packages do similar things?
-York


Sep 19 '05 #4
Your are right, a program cannot be smarter than its programmer. However
I need a program to parse any table-format data files offered by user. R
offer such a function, I hope python such a function too.

-York

While it may "attempt" to recognize the types, it in fact cannot
be more correct than the programmer. Example:

data="""0X1E04 111"""

That "looks" lile a hex and an int. But wait. What if it is
instead two strings?

In Python you can easily write a class with a interator that can
read the data from the file/table and return the PROPER data types
as lists, tuples, or dictionaries that are easy to manipulate.

-Larry Bates

York wrote:
Hi,

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column. write.table can
do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable can
automatically build a MySQL table and write a table of R data into
it.

Is there any python packages do similar things?
-York

Sep 19 '05 #5
York a écrit :
(snip)
I love python. However, as a biologist, I like some high-levels
functions in R. I don't want to spend my time on parse a data file. http://www.python.org/doc/current/lib/module-csv.html
Then
in my python script, I call R to read data file and write them into an
MySQL table. If python can do this easily, I don't need R at all.


So you don't need R at all.
Sep 19 '05 #6
It's so easy (using csv module), no need to build in.
You can wrap in a class if you want to make even easier.
Same can be done for tables from SQL database.

import csv
fp=open(r'C:\test.txt', 'r')
#
# test.txt contains:
#
# "record","value1","value2"
# "1","2","3"
# "2","4","5"
# "3","6","7"
table=csv.DictReader(fp)
for record in table:
#
# Record is a dictionary with keys as fieldnames
# and values of the data in each record
#
print "record #=%s, value1=%s, value2=%s" % \
(record['record'],record['value1'],record['value2'])

fp.close()

-Larry Bates
York wrote:
Your are right, a program cannot be smarter than its programmer. However
I need a program to parse any table-format data files offered by user. R
offer such a function, I hope python such a function too.

-York

While it may "attempt" to recognize the types, it in fact cannot
be more correct than the programmer. Example:

data="""0X1E04 111"""

That "looks" lile a hex and an int. But wait. What if it is
instead two strings?

In Python you can easily write a class with a interator that can
read the data from the file/table and return the PROPER data types
as lists, tuples, or dictionaries that are easy to manipulate.

-Larry Bates

York wrote:
Hi,

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column. write.table can
do the reverse.

R's MySQL interface has high-level functions, too, e.g. dbWriteTable can
automatically build a MySQL table and write a table of R data into
it.

Is there any python packages do similar things?
-York

Sep 19 '05 #7
On Mon, 19 Sep 2005, Bruno Desthuilliers wrote:
York a écrit :
(snip)
I love python. However, as a biologist, I like some high-levels
functions in R. I don't want to spend my time on parse a data file.


http://www.python.org/doc/current/lib/module-csv.html
Then in my python script, I call R to read data file and write them
into an MySQL table. If python can do this easily, I don't need R at
all.


So you don't need R at all.


Did you even read the OP's post? Specifically, this bit:

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Python's csv module gives you tuples of strings; it makes no effort to
recognise the types of the data. AFAIK, python doesn't have any IO
facilities like this.

Larry's point that automagical type detection is risky because it can make
mistakes is a good one, but that doesn't mean that magic is useless - on
the contrary, for the majority of cases, it works fine, and is extremely
convenient.

The good news is that it's reasonably easy to write such a function: you
just need a function 'type_convert' which takes a string and returns an
object of the right type; then you can do:

import csv

def read_table(f):
for row in csv.reader(f):
yield map(type_convert, row)

This is a very, very rough cut - it doesn't do comment stripping, skipping
blank lines, dealing with the presence of a header line or the use of
different separators, etc, but all that's pretty easy to add. Also, note
that this returns an iterator rather than a list; use list(read_table(f))
if you want an actual list, or change the implementation of the function.

type_convert is itself fairly simple:

def _bool(s): # helper method for booleans
s = s.lower()
if (s == "true"): return True
elif (s == "false"): return False
else: raise ValueError, s

types = (int, float, complex, _bool, str)

def type_convert(s):
for type in types:
try:
return type(s)
except ValueError:
pass
raise ValueError, s

This whole thing isn't quite as sophisticated as R's table.convert; R
reads the whole table in, then tries to find a type for each column which
will fit all the values in that column, whereas i do each cell
individually. Again, it wouldn't be too hard to do this the other way
round.

Anyway, hope this helps. Bear in mind that there are python bindings for
the R engine, so you could just use R's version of read.table in python.

tom

--
Don't trust the laws of men. Trust the laws of mathematics.
Sep 20 '05 #8
Thank you, Tom.
-York
Tom Anderson wrote:
On Mon, 19 Sep 2005, Bruno Desthuilliers wrote:
York a écrit :
(snip)
I love python. However, as a biologist, I like some high-levels
functions in R. I don't want to spend my time on parse a data file.

http://www.python.org/doc/current/lib/module-csv.html
Then in my python script, I call R to read data file and write them
into an MySQL table. If python can do this easily, I don't need R at
all.

So you don't need R at all.

Did you even read the OP's post? Specifically, this bit:

R language has very high-level IO functions, its read.table can read a
total .csv file and recogonize the types of each column.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Python's csv module gives you tuples of strings; it makes no effort to
recognise the types of the data. AFAIK, python doesn't have any IO
facilities like this.

Larry's point that automagical type detection is risky because it can
make mistakes is a good one, but that doesn't mean that magic is useless
- on the contrary, for the majority of cases, it works fine, and is
extremely convenient.

The good news is that it's reasonably easy to write such a function: you
just need a function 'type_convert' which takes a string and returns an
object of the right type; then you can do:

import csv

def read_table(f):
for row in csv.reader(f):
yield map(type_convert, row)

This is a very, very rough cut - it doesn't do comment stripping,
skipping blank lines, dealing with the presence of a header line or the
use of different separators, etc, but all that's pretty easy to add.
Also, note that this returns an iterator rather than a list; use
list(read_table(f)) if you want an actual list, or change the
implementation of the function.

type_convert is itself fairly simple:

def _bool(s): # helper method for booleans
s = s.lower()
if (s == "true"): return True
elif (s == "false"): return False
else: raise ValueError, s

types = (int, float, complex, _bool, str)

def type_convert(s):
for type in types:
try:
return type(s)
except ValueError:
pass
raise ValueError, s

This whole thing isn't quite as sophisticated as R's table.convert; R
reads the whole table in, then tries to find a type for each column
which will fit all the values in that column, whereas i do each cell
individually. Again, it wouldn't be too hard to do this the other way
round.

Anyway, hope this helps. Bear in mind that there are python bindings for
the R engine, so you could just use R's version of read.table in python.

tom

Sep 21 '05 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

42
by: Steven O. | last post by:
I am seeking some kind of tool that I can use for GUI prototyping. I know how to use Visual Basic, but since a lot of software is being coded in Java or C++, I'd like to learn a Java or C++ -based...
2
by: jfixsen | last post by:
Hello! Oracle 9.2.0.4 SunOS pchi-db01 5.8 Generic_108528-19 sun4u sparc SUNW,Ultra-EnterpriseSystem = SunOS Node = pchi-db01 Release = 5.8 KernelID = Generic_108528-19 Machine = sun4u...
19
by: Lorenzo J. Lucchini | last post by:
My code contains this declaration: : typedef union { : word Word; : struct { : byte Low; : byte High; : } Bytes; : } reg;
9
by: Durgesh Sharma | last post by:
Hi All, Pleas help me .I am a starter as far as C Language is concerned . How can i Right Trim all the white spaces of a very long (2000 chars) Charecter string ( from the Right Side ) ? or how...
3
by: qushui_chen | last post by:
I store the MSSqlServer is Nvarchar(unicode), the store data as "我就是我文本", How can i decode in C#?
2
by: johnb41 | last post by:
In my app, I need to open up a multipage tiff file, and also display it's thumbnail images IN HIGH QUALITY. (High Quality meaning anti-aliased, and looking good; not rough and pixely) The...
33
by: dembla | last post by:
Hey Frnds can anyone help me in this i need a program in 'c' PROGRAM to print NxN Matrix 9 1 8 1 2 3 2 7 3 as 4 5 6 6 4 5 7 8 9 in sorted form
3
by: rdudejr | last post by:
Hi all, Ive got a database approx 350 GB in which Im getting very high Time waited for prefetch. This is directly out of the snapshot for the db (these are for the entire database I assume as I...
6
by: adamscybot | last post by:
Here is the site in question: http://www.sws.vxcomputers.com/h2k/ Basically, on the left, you'll see a roster (them images) and you have to click the "Counter-Strike" link for it to load the...
49
by: Zach | last post by:
After having taken a looong break from VB (last used 6.0), I started getting back into programming again, this time with VS 2005. I began reading up on VB.NET from various sources (books,...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.