-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextraagefeature.py
More file actions
110 lines (79 loc) · 3.23 KB
/
extraagefeature.py
File metadata and controls
110 lines (79 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import pandas as pd
##############################################################################
def extractcity (data, cityname):
citta = data[data["Territorio"] == cityname]
cittatotal = citta[citta["ETA1"] == "TOTAL"]
mfcittatotal = cittatotal[cittatotal["Sesso"] == "totale"]
final = mfcittatotal[mfcittatotal["Stato civile"] == "totale"]
results = final[final.ITTER107.str.contains("IT")]
if len(results["Value"].values) == 0:
return citta, 0
popolazione = results["Value"].values[0]
return citta, popolazione
##############################################################################
def extraperage (citta, startage, endage=None):
sum = 0.0
if endage == None:
val = "Y_GE100"
citaETA = citta[citta["ETA1"] == val]
MFcitaETA = citaETA[citaETA["Sesso"] == "totale"]
final = MFcitaETA[MFcitaETA["Stato civile"] == "totale"]
results = final[final.ITTER107.str.contains("IT")]
#print(val, results["Value"].values[0])
if len(results["Value"].values) == 0:
sum += 0
else:
sum += results["Value"].values[0]
endage = 99
for i in range (startage,endage+1):
val = "Y"+str(i)
citaETA = citta[citta["ETA1"] == val]
MFcitaETA = citaETA[citaETA["Sesso"] == "totale"]
final = MFcitaETA[MFcitaETA["Stato civile"] == "totale"]
results = final[final.ITTER107.str.contains("IT")]
#print(val, results["Value"].values[0])
if len(results["Value"].values) == 0:
sum += 0
else:
sum += results["Value"].values[0]
return sum
##############################################################################
def extractfulldata (data, cityname):
citta, popolazione = extractcity (data, cityname)
totcheck = 0.0
sum = extraperage(citta, 0, 20)
#print(100.0 * (sum/popolazione))
totcheck += sum
bambini = sum
sum = extraperage(citta, 21, 64)
#print(100.0 * (sum/popolazione))
totcheck += sum
sum = extraperage(citta, 65)
#print(100.0 * (sum/popolazione))
totcheck += sum
anziani = sum
#print("Tot check: ", totcheck)
if totcheck != popolazione:
print(cityname, " WARNING ", cityname, totcheck, popolazione)
#print(anziani/bambini)
if bambini == 0 and anziani == 0:
return 1, popolazione
return anziani/bambini, popolazione
##############################################################################
if __name__ == "__main__":
data = pd.read_csv("popolazione2020.csv", sep="|", dtype={'ITTER107': str})
listacitta = list(set(data["Territorio"].values))
#print(listacitta)
finaresults = {}
finaresults["Provincia"] = []
finaresults["Ratio0200ver65"] = []
finaresults["Population2020"] = []
for i, cityname in enumerate(listacitta):
feat , pop = extractfulldata(data, cityname)
finaresults["Provincia"].append(cityname)
finaresults["Ratio0200ver65"].append(feat)
finaresults["Population2020"].append(pop)
#print(cityname, ",", extractfulldata(data, cityname))
print(i+1 , " of ", len(listacitta))
df = pd.DataFrame(finaresults)
df.to_csv("provinceages.csv")