Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #104491
| From | Jussi Piitulainen <jussi.piitulainen@helsinki.fi> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Read and count |
| Date | 2016-03-10 11:11 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <lf58u1qy9y1.fsf@ling.helsinki.fi> (permalink) |
| References | <2095750566.7009618.1457559033672.JavaMail.yahoo.ref@mail.yahoo.com> <mailman.116.1457599150.15725.python-list@python.org> |
Val Krem writes:
> Hi all,
>
> I am a new learner about python (moving from R to python) and trying
> read and count the number of observation by year for each city.
>
>
> The data set look like
> city year x
>
> XC1 2001 10
> XC1 2001 20
> XC1 2002 20
> XC1 2002 10
> XC1 2002 10
>
> Yv2 2001 10
> Yv2 2002 20
> Yv2 2002 20
> Yv2 2002 10
> Yv2 2002 10
>
> out put will be
>
> city
> xc1 2001 2
> xc1 2002 3
> yv1 2001 1
> yv2 2002 3
>
>
> Below is my starting code
> count=0
> fo=open("dat", "r+")
> str = fo.read();
> print "Read String is : ", str
>
> fo.close()
Below's some of the basics that you want to study. Also look up the csv
module in Python's standard library. You will want to learn these things
even if you end up using some sort of third-party data-frame library (I
don't know those but they exist).
from collections import Counter
# collections.Counter is a special dictionary type for just this
counts = Counter()
# with statement ensures closing the file
with open("dat") as fo:
# file object provides lines
next(fo) # skip header line
for line in fo:
# test requires non-empty string, but lines
# contain at least newline character so ok
if line.isspace(): continue
# .split() at whitespace, omits empty fields
city, year, x = line.split()
# collections.Counter has default 0,
# key is a tuple (city, year), parentheses omitted here
counts[city, year] += 1
print("city")
for city, year in sorted(counts): # iterate over keys
print(city.lower(), year, counts[city, year], sep = "\t")
# Alternatively:
# for cy, n in sorted(counts.items()):
# city, year = cy
# print(city.lower(), year, n, sep = "\t")
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Read and count Val Krem <valkrem@yahoo.com> - 2016-03-09 21:30 +0000
Re: Read and count Jussi Piitulainen <jussi.piitulainen@helsinki.fi> - 2016-03-10 11:11 +0200
Re: Read and count Peter Otten <__peter__@web.de> - 2016-03-10 10:33 +0100
Re: Read and count Val Krem <valkrem@yahoo.com> - 2016-03-10 11:09 -0600
csiph-web