[PYTHON] Ich habe die Anzahl der bundesweit geschlossenen und eröffneten Geschäfte von Corona überprüft

Wie viele Geschäfte hat Corona geschlossen?

Informationen zu bundesweit eröffneten und geschlossenen Geschäften werden auf der Website Opening and Closing.com gesammelt. Lassen Sie uns als Studie zum Schaben den Prozentsatz der geschlossenen Geschäfte in den Jahren März bis April 2020 und 2019 für jede Präfektur zusammenfassen.

Methode

Lassen Sie uns die Anzahl der Geschäfte zählen, die jedem Zeitraum in jeder Region auf der obigen Site entsprechen. Glücklicherweise ist es nach Regionen kategorisiert und jede Seite wird in absteigender Reihenfolge gespeichert. Verwenden Sie diese Option. Beim Scraping wird auch Pythons Beautifulsoup4 verwendet.

Ergebnisse / Diskussion

Schauen wir uns zuerst die Ergebnisse an (Implementierung unten). Das Ergebnis ist wie folgt. Der Wert der Seitenleiste ist in jeder Präfektur angegeben ratio = $ (N_ {geöffnet} - N_ {geschlossen}) $ / $ (N_ {geschlossen} + N_ {geöffnet}) $ Es ist standardisiert in.

2020.png 2019.png

Betrachtet man dies, so gibt es keinen signifikanten Unterschied aufgrund des Coronavirus. Es ist notwendig, zukünftige Trends zu betrachten, um festzustellen, ob die Auswirkungen einfach gering sind oder ob die Auswirkungen zeitverzögert auftreten. Ich hoffe, dass der Schaden irgendwie reduziert wird.

Implementierung

Sammeln Sie zunächst Daten von der oben genannten URL-Adresse.

shop_openup_closedown_ratio_1.py



from bs4 import BeautifulSoup
from urllib import request
import datetime
import numpy as np

def period(year,month,year_s = 2019,year_e = 2019,month_s = 3,month_e = 4):
    res = False
    if (year<=year_e) & (year >=year_s) & (month>=month_s) & (month<=month_e):
        res = 2
    if year >= year_e:
        if year > year_e:
            res = 1
        else:
            if month>month_e:
                res = 1

    return res



def main(year_s = 2020,year_e = 2020,month_s = 4,month_e = 4):
    dic = {}
    states = ['close','open']
    for state in range(len(states)):
        url = 'https://kaiten-heiten.com/heiten/area-' + states[state] + '/'  
        response = request.urlopen(url)
        soup = BeautifulSoup(response,'html.parser')

        for a in soup.find_all('a', class_="links"):   
            link = a.get('href')
            region = a.text 
            print(region)

            if dic.get(region) is None:
                dic[region] = [0,0]



            url = link
            response = request.urlopen(url)
            soup = BeautifulSoup(response,'html.parser')

            shop_list = soup.find_all('span', class_='post_time')

            year_last = int(shop_list[-1].text[:5])
            month_last = int(shop_list[-1].text[6:8])

            for a in shop_list:        

                year = int(a.text[:5])
                month = int(a.text[6:8])


                if period(year, month,year_s,year_e,month_s,month_e) == 2:
                    dic[region][state] += 1

                cout = 0
                flag = 0

                while period(year_last, month_last,year_s,year_e,month_s,month_e)>=1:

                    next_p = soup.find('a',class_='next page-numbers')
                    
                    if soup.find_all('a',class_='next page-numbers') is not None:
                        link = next_p.get('href')
                    else:
                        break

                    url = link
                    response = request.urlopen(url)
                    soup = BeautifulSoup(response,'html.parser')


                    shop_list = soup.find_all('span', class_='post_time')

                    year_last = int(shop_list[-1].text[:5])
                    month_last = int(shop_list[-1].text[6:8])


                    print(year_last,month_last)

                    for a in shop_list:        

                        year = int(a.text[:5])
                        month = int(a.text[6:8])


                        if period(year, month):
                            dic[region][state] += 1

                            
    regions = list(dic.keys())
    vals_ = np.array(list(dic.values()))

    hk = int(22)

    hk_name = ['Hokkaido']
    hk_vals = np.array([vals_[:hk,0].sum(), vals_[:hk,1].sum()])

    regions = hk_name + regions[hk:]
    vals = [list(hk_vals)] + list(vals_[hk:])


    # ratio == N_o - N_c / N

    ratio = np.zeros(len(regions))

    for i in range(len(regions)):
        ratio[i] = (vals[i][1] - vals[i][0]) / (vals[i][1] + vals[i][0])
    
    return regions, vals, ratio, vals_


regions_2020, vals_2020, ratio_2020, vals_2020 = main(2020,2020,3,4)
regions_2019, vals_2019, ratio_2019, vals_2019 = main(2019,2019,3,4)

Holen Sie sich die Daten mit.

shop_openup_closedown_ratio_2.py



import numpy as np
import cv2
from PIL import Image
import matplotlib.colors
import matplotlib.pyplot as plt
from japanmap import *



def mapping(regions,ratio,name,a=0.1,b=1):

    n_min = a
    n_max = b

    cmap = plt.cm.rainbow
    norm = matplotlib.colors.Normalize(vmin=n_min, vmax=n_max)

    def color_scale(r):
        tmp = cmap(norm(r))
        return (tmp[0]*255, tmp[1]*255, tmp[2]*255)

    dic = {}
    for k in range(len(regions)):
        map_val = color_scale(ratio[k])
        dic[regions[k]] = map_val

    lab = name + ' 3~4'
    fig = plt.figure(figsize=(15,9))
    plt.title(lab,fontsize=15)
    plt.imshow(picture(dic))


    sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
    
    plt.colorbar(sm)
    plt.show()
    
    fig.savefig(name)

Ordnen Sie die Daten mit. Handlung unten.

shop_openup_closedown_ratio_3.py



a = list(ratio_2020)+list(ratio_2019)

max_n = max(a)
min_n = min(a)
mapping(regions_2019,ratio_2019,'2019')
mapping(regions_2020,ratio_2020,'2020',min_n,max_n)


Datenquelle

Öffnen und Schließen.com

Recommended Posts

Ich habe die Anzahl der bundesweit geschlossenen und eröffneten Geschäfte von Corona überprüft
Ich habe mir die Versionen von Blender und Python angesehen
Ich habe das Standardbetriebssystem und die Shell der Docker-Maschine überprüft
Informieren Sie sich über das Alter und die Anzahl der Gewinne von Präfekturgouverneuren im ganzen Land
Ich habe den Inhalt des Docker-Volumes überprüft
Ich habe die Optionen von copyMakeBorder von OpenCV überprüft
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
Ich habe die Liste der Tastenkombinationen von Jupyter überprüft
Ich habe die Sitzungsaufbewahrungsdauer von Django überprüft
Ich habe die Verarbeitungsgeschwindigkeit der numpy eindimensionalisierung überprüft
Minimieren Sie die Anzahl der Polierungen, indem Sie die Kombination optimieren
Ich habe die Varianten von UKR gelesen und implementiert
[SLAYER] Ich habe versucht, die Stahlseele zu bestätigen, indem ich die Texte von Slash Metal [Word Cloud] visualisiert habe.
Beziehung der Fibonacci-Zahlenreihe und des Goldenen Schnitts
Ich habe die Ausgabespezifikationen von Bidirectional LSTM von PyTorch überprüft
Ich habe versucht, die Anzahl durch Programmieren zu erhöhen oder zu verringern
Ich habe versucht, die Anzahl der Todesfälle pro Kopf von COVID-19 (neues Koronavirus) nach Ländern zu tabellieren
Scraping von IDWR-Bulletin-Daten nach Anzahl der Berichte pro Influenza-Fixpunkt und nach Präfektur
Ich habe versucht, die Yin- und Yang-Klassifikation hololiver Mitglieder durch maschinelles Lernen zu überprüfen
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Ich habe den Chat von YouTube Live angezeigt und versucht zu spielen
Was ich bei der Analyse der Daten des Ingenieurmarktes gesehen habe
Das Geheimnis der Zahl, die nur durch Anordnen von 1s gesehen werden kann - Die Anzahl der Wiederholungen und die mysteriöse Natur -
Ich habe versucht, den Benutzernamen und das Kennwort von phpMyAdmin zu bewerten, auf die der Serverangriff abzielte
Ich habe versucht, die Anzahl der im Inland infizierten Menschen der neuen Korona mit einem mathematischen Modell vorherzusagen
Ich habe versucht, die Exponentialfunktion und die Logistikfunktion an die Anzahl der COVID-19-positiven Patienten in Tokio anzupassen
10. Zählen der Anzahl der Zeilen
Holen Sie sich die Anzahl der Ziffern
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ich habe es herausgefunden, indem ich die Bewertungen der Website für Jobwechsel analysiert habe! ??
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
Ich habe die X-Means-Methode untersucht, mit der die Anzahl der Cluster automatisch geschätzt wird
Ich habe zusammengefasst, wie die Boot-Parameter von GRUB und GRUB2 geändert werden
Ich habe den Nutzungsstatus des Parkplatzes anhand von Satellitenbildern überprüft.
Ich untersuchte das Verhalten bezüglich des Unterschieds zwischen Hard Link und Symbolic Link
Ich habe das Bild der Science University auf Twitter mit Word2Vec überprüft.
Ich möchte die legendäre Nintendo-Kombination wiederbeleben, indem ich AI und HR Tech voll ausnütze!
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University