Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. In [1]:
  2. import numpy as np
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. import seaborn as sns
  6. %matplotlib inline
  7.  
  8. sns.set(rc={'figure.figsize':(20, 5)})
  9. In [2]:
  10. df = pd.read_excel('data.xlsx')
  11. In [3]:
  12. df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')
  13. In [4]:
  14. # Количество умерших в день
  15. df['Day_dead'] = df['Dead'].rolling(window=2).apply(lambda x: x.iloc[1] - x.iloc[0])
  16. df.loc[0, 'Day_dead'] = df.loc[0, 'Dead']
  17. In [5]:
  18. # Количество новых зараженных в день
  19. df['Day_сonfirmed'] = df['Confirmed'].rolling(window=2).apply(lambda x: x.iloc[1] - x.iloc[0])
  20. df.loc[0, 'Day_сonfirmed'] = df.loc[0, 'Confirmed']
  21. In [ ]:
  22.  
  23. In [6]:
  24. df.head()
  25. Out[6]:
  26. Date Confirmed Dead Day_dead Day_сonfirmed
  27. 0 2020-01-20 278 6 6.0 278.0
  28. 1 2020-01-21 309 6 0.0 31.0
  29. 2 2020-01-23 571 17 11.0 262.0
  30. 3 2020-01-24 830 25 8.0 259.0
  31. 4 2020-01-25 1297 41 16.0 467.0
  32. In [7]:
  33. # # таблица в виде изображения
  34. # # https://stackoverflow.com/a/39358752/10418812
  35.  
  36. # import pandas as pd
  37. # import numpy as np
  38. # import matplotlib.pyplot as plt
  39. # import six
  40.  
  41. # df_print = df.copy()
  42. # df_print.columns = ['Дата', 'Инф-ных', 'Умерших', 'Умерших за день', 'Инф-ных за день']
  43.  
  44. # def render_mpl_table(data, col_width=3.0, row_height=0.625, font_size=14,
  45. # header_color='#40466e', row_colors=['#f1f1f2', 'w'], edge_color='w',
  46. # bbox=[0, 0, 1, 1], header_columns=0,
  47. # ax=None, **kwargs):
  48. # if ax is None:
  49. # size = (np.array(data.shape[::-1]) + np.array([0, 1])) * np.array([col_width, row_height])
  50. # fig, ax = plt.subplots(figsize=size)
  51. # ax.axis('off')
  52.  
  53. # mpl_table = ax.table(cellText=data.values, bbox=bbox, colLabels=data.columns, **kwargs)
  54.  
  55. # mpl_table.auto_set_font_size(False)
  56. # mpl_table.set_fontsize(font_size)
  57.  
  58. # for k, cell in six.iteritems(mpl_table._cells):
  59. # cell.set_edgecolor(edge_color)
  60. # if k[0] == 0 or k[1] < header_columns:
  61. # cell.set_text_props(weight='bold', color='w')
  62. # cell.set_facecolor(header_color)
  63. # else:
  64. # cell.set_facecolor(row_colors[k[0]%len(row_colors) ])
  65. # return ax
  66.  
  67. # render_mpl_table(df_print, header_columns=0, col_width=3.0)
  68. In [ ]:
  69.  
  70. In [8]:
  71. plt.xticks(rotation=45, ha="right")
  72. ax = sns.lineplot(x='Date', y='Day_dead', data=df, marker='o')
  73. ax.set(xlabel='Дата', ylabel='Кол-во умерших за день')
  74. ax.set(xticks=df['Date'].values);
  75.  
  76. In [9]:
  77. # Исправление выбросов по умершим
  78. # https://en.wikipedia.org/wiki/Timeline_of_the_2019%E2%80%9320_coronavirus_outbreak#cite_note-:20200212correction-48
  79. df.loc[df['Date'] == '2020-02-13', 'Day_dead'] -= 108
  80. df.loc[df['Date'] == '2020-02-14', 'Day_dead'] += 108
  81. In [10]:
  82. plt.xticks(rotation=45, ha="right")
  83. ax = sns.lineplot(x='Date', y='Day_dead', data=df, marker='o')
  84. ax.set(xlabel='Дата', ylabel='Кол-во умерших за день')
  85. ax.set(xticks=df['Date'].values);
  86.  
  87. In [ ]:
  88.  
  89. In [11]:
  90. plt.xticks(rotation=45, ha="right")
  91. ax = sns.lineplot(x='Date', y='Day_сonfirmed', data=df, marker='o', color='r')
  92. ax.set(xlabel='Дата', ylabel='Кол-во инфицированных за день')
  93. ax.set(xticks=df['Date'].values);
  94.  
  95. In [12]:
  96. # Исправление выбросов по инфицированным
  97. df.loc[df['Date'] == '2020-02-17', 'Day_сonfirmed'] = np.mean(df.loc[df['Date'].isin(['2020-02-16', '2020-02-18']), 'Day_сonfirmed'])
  98. In [13]:
  99. plt.xticks(rotation=45, ha="right")
  100. ax = sns.lineplot(x='Date', y='Day_сonfirmed', data=df, marker='o', color='r')
  101. ax.set(xlabel='Дата', ylabel='Кол-во инфицированных за день')
  102. ax.set(xticks=df['Date'].values);
  103.  
  104. In [ ]:
  105.  
  106. In [14]:
  107. fig, ax = plt.subplots()
  108. plt.xticks(rotation=45, ha="right")
  109. sns.lineplot(x='Date', y='Day_dead', data=df, ax=ax, color='b', label='Умершие', marker='o')
  110. ax.set(xlabel='Дата', ylabel='Кол-во умерших за день')
  111. plt.legend(bbox_to_anchor=(0.01, 0.95), loc='upper left')
  112. ax2 = ax.twinx()
  113. sns.lineplot(x='Date', y='Day_сonfirmed', data=df, ax=ax2, color='r', label='Инфицированные', marker='o')
  114. ax2.set(ylabel='Кол-во инфицированных за день');
  115. plt.legend(bbox_to_anchor=(0.01, 0.85), loc='upper left');
  116.  
  117. ax.set(xticks=df['Date'].values);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement