frequency of values in a field
noydb
jenn.duerr at gmail.com
Wed Feb 9 12:52:27 EST 2011
>
> The Decimal module is pretty slow but is conceptually probably the right
> way to do this. With just 50k records it shouldn't be too bad. With
> more records you might look for a faster way.
>
> from decimal import Decimal as D
> from collections import defaultdict
>
> records = ['3.14159','2.71828','3.142857']
>
> td = defaultdict(int)
> for x in records:
> td[D(x).quantize(D('0.01'))] += 1
>
> print td
>
I played with this - it worked. Using Python 2.6 so counter no good.
I require an output text file of sorted "key value" so I added
(further code to write out to an actual textfile, not important here)
>> for z in sorted(set(td)):
>> print z, td[z]
So it seems the idea is to add all the records in the particular field
of interest into a list (record). How does one do this in pure
Python?
Normally in my work with gis/arcgis sw, I would do a search cursor on
the DBF file and add each value in the particular field into a list
(to populate records above). Something like:
>> import arcgisscripting
>> # Create the geoprocessor object
>> gp = arcgisscripting.create()
>> records_list = []
>> cur = gp.SearchCursor(dbfTable)
>> row = cur.Next()
>> while row:
>> value = row.particular_field
>> records_list.append(value)
More information about the Python-list
mailing list