ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

arcpy-字段唯一值、重复值、最值、平均值、方差、标准差、中数、众数

2019-09-23 20:51:55  阅读:302  来源: 互联网

标签:AddMessage format value dic 中数 众数 arcpy row


 1 import arcpy
 2 import numpy
 3 from arcpy import da
 4 
 5 def GetFieldUniqueValue(inTable,inField):
 6     value_list=[]
 7     rows=arcpy.da.SearchCursor(inTable,inField)
 8     for row in rows:
 9         if row[0] not in value_list:
10             value_list.append( str(row[0]).decode('utf-8') )
11     del row
12     del rows
13     return value_list
14 
15 def GetDuplicateValue(inTable,inField):
16     dic={}
17     rows=arcpy.da.SearchCursor(inTable,inField)
18     for row in rows:
19         if row[0] in dic.keys():
20             dic[row[0]]=dic[row[0]]+1
21         else:
22             dic[row[0]]=1
23     del row
24     del rows
25     for key,value in dic.items():
26         if value==1:
27             del dic[key]
28     return dic
29 
30 def GetFieldMode(inTable,inField):
31     dic=GetDuplicateValue(inTable,inField)
32     lst=[value for key,value in dic.items()]
33     num=max(lst)
34     modeList=[]
35     for key,value in dic.items():
36         if value==num:
37             modeList.append(key)
38     return modeList
39 
40 def GetFieldValueList(inTable,inField):
41     value_list=[]
42     rows=arcpy.da.SearchCursor(inTable,inField)
43     for row in rows:
44         value_list.append(row[0])
45     del row
46     del rows
47     return value_list
48 
49 def main():
50     in_fc=arcpy.GetParameterAsText(0)
51     in_fld=arcpy.GetParameterAsText(1)
52     c=arcpy.GetParameterAsText(2)
53     if c== "Unique value":
54         uniqueValue=GetFieldUniqueValue(in_fc,in_fld)
55         arcpy.AddMessage("Unique Value:")
56         for i in uniqueValue:
57             arcpy.AddMessage(str(i))
58     if c=="Duplicate value":
59         duplicateValue= GetDuplicateValue(in_fc,in_fld)
60         arcpy.AddMessage("Duplicate Value,Count:")
61         for key,value in duplicateValue.items():
62             arcpy.AddMessage("{0},{1}".format(key,value))
63     if c=="Max/Min/Sum/Average etc.":
64         valueList=GetFieldValueList(in_fc,in_fld)
65         arcpy.AddMessage("Field Name:{}".format(in_fld))
66         arcpy.AddMessage("Max:{}".format(max(valueList)))
67         arcpy.AddMessage("Min:{}".format(min(valueList)))
68         arcpy.AddMessage("Sum:{}".format(sum(valueList)))
69         arcpy.AddMessage("Average:{}".format(numpy.mean(valueList)))
70         arcpy.AddMessage("Median:{}".format(numpy.median(valueList)))
71         arcpy.AddMessage("Mode:{}".format(GetFieldMode(in_fc,in_fld)))
72         arcpy.AddMessage("Variance:{}".format(numpy.var(valueList)))
73         arcpy.AddMessage("Standard Deviation:{}".format(numpy.std(valueList)))

 

标签:AddMessage,format,value,dic,中数,众数,arcpy,row
来源: https://www.cnblogs.com/yzhyingcool/p/11574709.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有