## 判断依据

• 如果IP地址和问题A的回答指向同一地区（跨省亦可，例如IP在北京，问题A的答复在山东，同属东部地区），那么将回答者划分进入这一地区。
• 如果IP地址和问题A的回答指向不同地区，那么将回答者划分进入问题A的回答所在的地区。
• 对于其他情况手动判断处理。

## 实现代码

import numpy as np
import pandas as pd
import csv

def in_chich_range(str_ip,str_gk):
judge_if_same=[0 for i in range(len(str_ip))]
for i in range(len(str_ip)):
for j in east_range:
if j in str_ip[i] and j in str_gk[i]:
judge_if_same[i]=1
for j in middle_range:
if j in str_ip[i] and j in str_gk[i]:
judge_if_same[i]=2
for j in west_range:
if j in str_ip[i] and j in str_gk[i]:
judge_if_same[i]=3
print(judge_if_same)
need_to_further_judge=[]
for i in range(len(judge_if_same)):
if judge_if_same[i]==0:
need_to_further_judge.append(i)
return judge_if_same,need_to_further_judge

def show_to_judge(need,str_ip,str_gk):
for i in need:
print(i,str_ip[i],str_gk[i])

def just_judge_gk(need,judge_if_same,str_gk):
for i in need:
flag=False
for j in east_range:
if j in str_gk[i]:
judge_if_same[i]=1
flag=True
for j in middle_range:
if j in str_gk[i]:
judge_if_same[i]=2
flag=True
for j in west_range:
if j in str_gk[i]:
judge_if_same[i]=3
flag=True
if flag==False:
if '澳门' in str_gk[i] or '澳門' in str_gk[i]:
judge_if_same[i]=4
return judge_if_same

east_string='北京、天津、河北、辽宁、上海、江苏、浙江、福建、山东、广东、海南'
middle_string='山西、吉林、黑龙江、安徽、江西、河南、湖北、湖南'
west_string='四川、重庆、贵州、云南、西藏、陕西、甘肃、青海、宁夏、新疆、广西、内蒙古'
east_range=east_string.split('、')
middle_range=middle_string.split('、')
west_range=west_string.split('、')

str_ip=[]
str_gk=[]
with open('311.csv',encoding='utf-8') as f:
flag=False
for row in f_csv:
if flag==False:
str1=str(row[5])
str2=str(row[13])
print(row[5])
print(row[13])
flag=True
else:
str_ip.append(row[5])
str_gk.append(row[13])

print(str_ip)
print(str_gk)

judge_if_same,need_to_further_judge=in_chich_range(str_ip,str_gk)
print(need_to_further_judge)
print(len(need_to_further_judge))

show_to_judge(need_to_further_judge,str_ip,str_gk)
judge_if_same=just_judge_gk(need_to_further_judge,judge_if_same,str_gk)
print(judge_if_same)

for i in range(5):
count=0
for j in judge_if_same:
if i==j:
count=count+1
print(count)


## 更进一步

• 部分IP地址所对应的地区是错误的。问卷回收中得到的提交者的IP地址并不总是能够对应到正确的城市，例如问卷中部分回答者的IP被错误的定位到了克孜勒苏，这样的情况下是没有办法得知他们提交问卷时所在的真实城市的。
• 部分回答是不清晰的，实际上问卷并没有规定问题A的回答的格式，有相当数量的回答者给出的细节仅仅精确到了省的级别，而他们所在的IP位置有时候与这一省的位置是矛盾的（需要怀疑的是，部分回答者似乎理解错了问题A的含义），这里的取舍需要谨慎考虑。