Added Top N and Time Series
This commit is contained in:
parent
8e3765f5c2
commit
f5f2a05f7e
|
@ -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()
|
||||
|
||||
|
|
Loading…
Reference in a new issue