Added Top N and Time Series

This commit is contained in:
Maximilian Golla 2022-02-03 23:25:58 +01:00
parent 8e3765f5c2
commit f5f2a05f7e

View file

@ -4,7 +4,7 @@
'''
:author: Maximilian Golla
: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
: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
return result
def query(data, base, compare):
def query(data, base, compare, n):
b_year = base[0:4]
b_week = base[4:6]
c_year = compare[0:4]
@ -148,20 +148,24 @@ def query(data, base, compare):
# Percentage
diff_percent = round( (diff * 100.0) / base_value[state], 2)
'''
if diff == 0:
diff = "+-" + str(diff)
elif diff > 0:
diff = "+" + str(diff)
else:
diff = str(diff)
'''
differences[state] = diff
'''
if diff_percent == 0:
diff_percent = "+-" + str(diff_percent) + " %"
elif diff_percent > 0:
diff_percent = "+" + str(diff_percent) + " %"
else:
diff_percent = str(diff_percent) + " %"
'''
difference_percent[state] = diff_percent
print("Change (Absolute):")
@ -169,11 +173,36 @@ def query(data, base, compare):
print("Change (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
header = ["Jahr", "Woche"]
for state in STATES:
for state in states:
header.append(state)
print("\t".join(header))
@ -181,7 +210,7 @@ def output(data):
for year in data:
for week in data[year]:
line = [str(year), str(week)]
for state in STATES:
for state in states:
dead = str(data[year][week][state])
line.append(dead)
print("\t".join(line))
@ -189,9 +218,11 @@ def output(data):
def main():
data = read_file('COVID-19_Todesfaelle.csv')
data = parse(data)
#output(data)
query(data, "202130", "202131")
output(data, STATES)
base = "202130"
compare = "202131"
query(data, base, compare, 5)
if __name__ == '__main__':
main()