Étude sur Tokyo Rent en utilisant Python (3-2)

Extrait de résultat

Publié simultanément sur le blog: https://leoluistudio.com/blog/24/python%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e6%9d%b1%e4%ba%ac%e9%83%bd%e5%ae%b6%e8%b3%83%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e7%a0%94%e7%a9%b6-4%e3%81%ae2/

Méthode statistique 1

Collecte de données

--Source des données: https://suumo.jp --Bibliothèque utilisée: requêtes, BeautifulSoup, re, time, sqlite3


Base de données

Structure de la base de données

info
id 1 (PRIMARY KEY)
municipal Quartier Chiyoda
train 7 (Marcher jusqu'à la gare)
type appartement
date 1983
structure Acier renforcé
floor 8
carpark 0 (0 est aucun, 1 est oui)
price
id 1 (PRIMARY KEY)
pid 160000 (Cercle)
1 (=ID info) 7 (Marcher jusqu'à la gare)
area 42.9 (Carré)
date est

Première 5e ligne pour chaque table db.png


Programmes et résultats

Installez d'abord les bibliothèques nécessaires

import sqlite3
import pandas as pd

import plotly.express as px
import plotly.graph_objects as go
from plotly.offline import plot

from sklearn.decomposition import PCA

Connectez la base de données

#Si le résultat est sorti uniquement
conn = sqlite3.connect(‘info.db’)
c = conn.cursor()
cursor = c.execute("Code SQL")
for row in cursor:
    print(résultat)
conn.close()

#Pour traitement en sauvegardant le résultat
conn = sqlite3.connect(‘info.db’)
df = pd.read_sql_query("Code SQL", conn)
conn.close()

Premier regard sur la distribution des données

#Nombre de lignes d'informations
SELECT COUNT(id) FROM info
#Résultat: 82,812

#Nombre de lignes dans le prix
SELECT COUNT(id) FROM price
#Résultat: 624,499

#Nombre d '"appartements" et "appartements"
SELECT type,COUNT(type) FROM info GROUP BY type
#Résultat: Appartement 33,110 /Manoir 49,702

Répartition des dates d'achèvement

# SQL
SELECT date AS year,COUNT(date) AS count FROM info WHERE date > 0 GROUP BY date

#Graphique
fig = px.bar(df, x=’year’, y=’count’, height=500, width=1000)

L1no4.png


Répartition de la structure du bâtiment

# SQL
SELECT structure,COUNT(structure) AS count FROM info WHERE structure != 0 GROUP BY structure

#Graphique
fig = px.bar(df, x=structure, y=’count’, height=500, width=1000)

L1no5.png


Répartition des sols

# SQL
SELECT floor,COUNT(floor) AS count FROM info WHERE floor != 0 GROUP BY floor

#Graphique
fig = px.bar(df, x=floor, y=’count’, height=500, width=1000)

L1no6A.png

Dans le tableau ci-dessus, la distribution au 20e étage et au-dessus ne peut pas du tout être vue, alors regardons de plus près ici.

# SQL
SELECT floor,COUNT(floor) AS count FROM info WHERE floor > 20 GROUP BY floor

#Graphique
fig = px.bar(df, x=floor, y=’count’, height=500, width=1000)

L1no6B.png


Les variables continues (par exemple le prix) doivent être regroupées avant de pouvoir être analysées.

def pricegroup(df):
    if df[‘price’] < 30000:
      return ‘<30,000’
    elif df[‘price’] < 60000:
      return ‘30,000-60,000’
    ……
    else:
      return ‘>270,000’

pricegroup_list = [‘<30,000’,
    ‘30,000-60,000’,
    ‘60,000-90,000’,
    ……
    ‘240,000-270,000’,
    ‘>270,000’]

Répartition des prix

# SQL
SELECT price FROM price

#Traitement des trames de données df[‘pricegroup’] = df.apply(pricegroup, axis=1)
dfcount = df.groupby([‘pricegroup’]).count()

#Graphique
fig = px.bar(dfcount, x=dfcount.index, y=’price’, height=500, width=1000)
fig.update_layout(xaxis={‘categoryorder’:’array’, ‘categoryarray’:pricegroup_list}, yaxis_title=’count’)

L1no7V2.png


La répartition de la zone est la même

def pricegroup(df):
    if df[‘area’] < 5:
      return ‘<5’
    elif df[‘area’] < 10:
      return ‘5-10’
    ……
    else:
      return ‘>45’

pricegroup_list = [‘<5′, ’5-10′, ’10-15′, ’15-20′,
    ’20-25′, ’25-30′, ’30-35′, ’35-40′,
    ’40-45′,’>45′]

# SQL
SELECT area FROM price

#Traitement des trames de données
df[‘areagroup’] = df.apply(areagroup, axis=1)
dfcount = df.groupby([‘areagroup’]).count()

#Graphique
fig = px.bar(dfcount, x=dfcount.index, y=’area’, height=500, width=1000)
fig.update_layout(xaxis={‘categoryorder’:’array’, ‘categoryarray’:areagroup_list}, yaxis_title=’count’)

L1no8V2.png


Distribution directionnelle

# SQL
SELECT direction,COUNT(direction) AS count FROM price WHERE direction != ‘-‘ GROUP BY direction

#Graphique
fig = px.bar(df, x=direction, y=’count’, height=500, width=1000)

L1no9.png


Avant d'analyser les quartiers, les villes, les villes et les villages, divisez-les en 23 quartiers et villes.

m23_list = [«Chiyoda Ward»,«Chuo-ku»,«Minato-ku»,«Quartier Shinjuku»,«Bunkyo Ward»,«Taito»,«Sumida Ward»,
«Koto Ward»,«Quartier Shinagawa»,«Meguro»,«Ota-ku»,«Setagaya»,«Quartier de Shibuya»,«Nakano»,
«Suginami»,«Quartier de Toshima»,«Kita Ward»,«Arakawa»,«Itabashi Ward»,«Nerima Ward»,«Adachi Ward»,
«Katsushika»,«Edogawa Ward»]

municipal_dict = {}
conn = sqlite3.connect(‘info.db’)
c = conn.cursor()
cursor = c.execute(“SELECT id,municipal FROM info”)
for row in cursor:
    municipal_dict.update({row[0]:row[1]})
conn.close()

def municipal(df):
    return municipal_dict[df[‘pid’]]

def municipal23(df):
    if df[‘municipal’] in m23_list:
      return ‘Special Wards’
    else:
      return ‘Non Special Wards’

Relation entre le prix et la superficie (divisé en 23 quartiers et zones urbaines)

# SQL
SELECT pid,price,area FROM price

#Traitement des trames de données
df[‘municipal’] = df.apply(municipal, axis=1)
df[‘municipal23’] = df.apply(municipal23, axis=1)
dfmedian = df.groupby([‘pid’, ‘municipal23’])[‘price’, ‘area’].median()
dfmedian_reset = dfmedian.reset_index(level=’municipal23′)

#Graphique
fig = px.scatter(dfmedian_reset, x=’area’, y=’price’, color=’municipal23′, labels={‘municipal23’: ‘Special Wards’}, height=500, width=1000)

L2no1.png

Recommended Posts

Étude sur Tokyo Rent en utilisant Python (3-2)
Étude sur Tokyo Rent en utilisant Python (3-3)
Étude sur Tokyo Rent en utilisant Python (3-1 sur 3)
Diffusion sur LINE en utilisant python
Remarques sur l'installation de Python à l'aide de PyEnv
Notes sur l'utilisation de rstrip avec python.
Installer Python sur CentOS à l'aide de Pyenv
Installez Python sur CentOS en utilisant pyenv
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Installez la bibliothèque python sur Lambda à l'aide de [/ tmp]
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Détectez la température à l'aide de python sur Raspberry Pi 3!
Note d'apprentissage Python_002
Note d'apprentissage Python_000
Python sur Windows
twitter avec python3
Note d'apprentissage Python_006
Commencez à utiliser Python
python sur mac
Note d'apprentissage Python_003
Note d'apprentissage Python_005
Python sur Windbg
Scraping à l'aide de Python
Note d'apprentissage Python_001
Premier jour d'étude de Python
Construire l'environnement Python3.5 + matplotlib sur Ubuntu 12 en utilisant Anaconda
Détectez les interrupteurs à glissière à l'aide de python sur Raspberry Pi 3!
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Installez Python 3.8.6 sur macOS BigSur à l'aide de pyenv
Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3!
Remarques sur l'utilisation de dict avec python [Competition Pro]
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Utilisez python + galbé pour générer des points uniquement à Tokyo
[Python] Remarques sur l'accélération des algorithmes génétiques à l'aide du multitraitement
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
Conda Python avec Cygwin
Installer python sur WSL
Configuration de PyOpenGL sur Python 3
Installez Python sur Pidora.
Installez Scrapy sur python3
Séquence de Fibonacci utilisant Python
[Heroku] Mémo pour le déploiement d'applications Python à l'aide d'Heroku sous Windows [Python]
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
Installez Python3.4 sur CentOS 6.6
Nettoyage des données à l'aide de Python
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
Installer des pandas sur python2.6
Utilisation des packages Python #external
python basic ② sous windows
Câblage Communication Pi-SPI avec Python
Créez un environnement Python sur votre Mac en utilisant pyenv
Installez python sur Windows
Calcul de l'âge à l'aide de python