Added Top N and Time Series
This commit is contained in:
parent
8e3765f5c2
commit
f5f2a05f7e
|
@ -4,7 +4,7 @@
|
||||||
'''
|
'''
|
||||||
:author: Maximilian Golla
|
:author: Maximilian Golla
|
||||||
:contact: maximilian.golla@rub.de
|
:contact: maximilian.golla@rub.de
|
||||||
:version: 0.0.5, 2022-02-01
|
:version: 0.0.6, 2022-02-03
|
||||||
:description: Parses and formats RKI Todesfaelle nach Sterbedatum
|
:description: Parses and formats RKI Todesfaelle nach Sterbedatum
|
||||||
:data: https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Projekte_RKI/COVID-19_Todesfaelle.xlsx
|
:data: https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Projekte_RKI/COVID-19_Todesfaelle.xlsx
|
||||||
'''
|
'''
|
||||||
|
@ -86,7 +86,7 @@ def parse(data):
|
||||||
result[year][week][state] = dead
|
result[year][week][state] = dead
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def query(data, base, compare):
|
def query(data, base, compare, n):
|
||||||
b_year = base[0:4]
|
b_year = base[0:4]
|
||||||
b_week = base[4:6]
|
b_week = base[4:6]
|
||||||
c_year = compare[0:4]
|
c_year = compare[0:4]
|
||||||
|
@ -148,20 +148,24 @@ def query(data, base, compare):
|
||||||
# Percentage
|
# Percentage
|
||||||
diff_percent = round( (diff * 100.0) / base_value[state], 2)
|
diff_percent = round( (diff * 100.0) / base_value[state], 2)
|
||||||
|
|
||||||
|
'''
|
||||||
if diff == 0:
|
if diff == 0:
|
||||||
diff = "+-" + str(diff)
|
diff = "+-" + str(diff)
|
||||||
elif diff > 0:
|
elif diff > 0:
|
||||||
diff = "+" + str(diff)
|
diff = "+" + str(diff)
|
||||||
else:
|
else:
|
||||||
diff = str(diff)
|
diff = str(diff)
|
||||||
|
'''
|
||||||
differences[state] = diff
|
differences[state] = diff
|
||||||
|
|
||||||
|
'''
|
||||||
if diff_percent == 0:
|
if diff_percent == 0:
|
||||||
diff_percent = "+-" + str(diff_percent) + " %"
|
diff_percent = "+-" + str(diff_percent) + " %"
|
||||||
elif diff_percent > 0:
|
elif diff_percent > 0:
|
||||||
diff_percent = "+" + str(diff_percent) + " %"
|
diff_percent = "+" + str(diff_percent) + " %"
|
||||||
else:
|
else:
|
||||||
diff_percent = str(diff_percent) + " %"
|
diff_percent = str(diff_percent) + " %"
|
||||||
|
'''
|
||||||
difference_percent[state] = diff_percent
|
difference_percent[state] = diff_percent
|
||||||
|
|
||||||
print("Change (Absolute):")
|
print("Change (Absolute):")
|
||||||
|
@ -169,11 +173,36 @@ def query(data, base, compare):
|
||||||
print("Change (Percent):")
|
print("Change (Percent):")
|
||||||
print(difference_percent)
|
print(difference_percent)
|
||||||
|
|
||||||
|
# Get Top N entries
|
||||||
|
top = dict()
|
||||||
|
for i in range(0, n):
|
||||||
|
max_key = max(difference_percent, key=difference_percent.get)
|
||||||
|
top[max_key] = difference_percent[max_key]
|
||||||
|
del difference_percent[max_key]
|
||||||
|
|
||||||
|
print("\nTop {}:".format(n))
|
||||||
|
print(top)
|
||||||
|
|
||||||
def output(data):
|
time_series = dict()
|
||||||
|
for i in range(0, end + 1):
|
||||||
|
year = all_entries[i][0:4]
|
||||||
|
week = all_entries[i][4:6]
|
||||||
|
for state in top:
|
||||||
|
if i >= start:
|
||||||
|
if year not in time_series:
|
||||||
|
time_series[year] = dict()
|
||||||
|
if week not in time_series[year]:
|
||||||
|
time_series[year][week] = dict()
|
||||||
|
if state not in time_series[year][week]:
|
||||||
|
time_series[year][week][state] = data[year][week][state]
|
||||||
|
|
||||||
|
print("\nTime Series:")
|
||||||
|
output(time_series, top)
|
||||||
|
|
||||||
|
def output(data, states):
|
||||||
# Print the header
|
# Print the header
|
||||||
header = ["Jahr", "Woche"]
|
header = ["Jahr", "Woche"]
|
||||||
for state in STATES:
|
for state in states:
|
||||||
header.append(state)
|
header.append(state)
|
||||||
print("\t".join(header))
|
print("\t".join(header))
|
||||||
|
|
||||||
|
@ -181,7 +210,7 @@ def output(data):
|
||||||
for year in data:
|
for year in data:
|
||||||
for week in data[year]:
|
for week in data[year]:
|
||||||
line = [str(year), str(week)]
|
line = [str(year), str(week)]
|
||||||
for state in STATES:
|
for state in states:
|
||||||
dead = str(data[year][week][state])
|
dead = str(data[year][week][state])
|
||||||
line.append(dead)
|
line.append(dead)
|
||||||
print("\t".join(line))
|
print("\t".join(line))
|
||||||
|
@ -189,9 +218,11 @@ def output(data):
|
||||||
def main():
|
def main():
|
||||||
data = read_file('COVID-19_Todesfaelle.csv')
|
data = read_file('COVID-19_Todesfaelle.csv')
|
||||||
data = parse(data)
|
data = parse(data)
|
||||||
#output(data)
|
output(data, STATES)
|
||||||
query(data, "202130", "202131")
|
|
||||||
|
base = "202130"
|
||||||
|
compare = "202131"
|
||||||
|
query(data, base, compare, 5)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue