[PYTHON] Vorverarbeitung von Präfekturdaten

Abschlusscode

transform.py


import re
import pandas as pd
import numpy as np
import codecs
import matplotlib.pyplot as plt
from sklearn import linear_model

with codecs.open(<Fahrzeugdaten>, "r", "Shift-JIS", "ignore") as file:   #http://qiita.com/niwaringo/items/d2a30e04e08da8eaa643
    df = pd.read_table(file, delimiter=",")

dfx = df.copy()

dfx.iloc[:,5:] = dfx.iloc[:,5:].applymap(lambda x: re.sub(',','',x)).applymap(lambda x: re.sub('-','',x)).convert_objects(convert_numeric=True)
#FutureWarning: convert_objects is deprecated.  Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.


with codecs.open('Wohngebiet.csv', "r", "Shift-JIS", "ignore") as file:
    df2 = pd.read_table(file, delimiter=",")

df2.iloc[:,3:] = df2.iloc[:,3:].applymap(lambda x: re.sub(',','',x)).applymap(lambda x: re.sub('-','',x)).convert_objects(convert_numeric=True)

nan = float('nan')
static_data=pd.DataFrame({
        'Population_Signal':[nan],
        'Bereich_Signal':[nan],
        'Präfekturen':[nan],
        'Wagen_Signal':[nan],
        'Wohngebiet_Signal':[nan],
        'Zusammengesetzte Funktion_Population_Bereich':[nan],
        'Zusammengesetzte Funktion_Wagen_Bereich':[nan],
        'Zusammengesetzte Funktion_Population_Wohngebiet':[nan],
        'Zusammengesetzte Funktion_Wagen_Wohngebiet':[nan]
    }).dropna()

for iteritem in range(1,48):
    iter_shape = df2[df2['Präfekturcode']==iteritem]

    iter_data = dfx[
                    (dfx['Präfekturcode']==iteritem)
                  & (dfx['Gemeinde'].str.contains('Stadt$') | dfx['Gemeinde'].str.contains('Gesamt$') | dfx['Gemeinde'].str.contains('$') | dfx['Gemeinde'].str.contains('$'))
                  & (dfx[''].str.contains('^$'))
                ]

    iter_data2 = iter_data.copy()
    iter_data2.loc[:,''] = iter_data2.loc[:,''].apply(lambda x: re.sub(r'Stadt insgesamt$','Stadt',x))
    iter_data2.loc[:,'Gemeinde'] = iter_data2.loc[:,'Gemeinde'].apply(lambda x: re.sub(r'^.*Bezirk','',x))

    merged = pd.merge(iter_shape,iter_data2,on='Gemeinde')
    merged = merged.assign(
Zusammengesetzte Funktion_Population=np.nan,
Zusammengesetzte Funktion_Wagen_Bereich=(merged['Insgesamt insgesamt']**(2/3))*(merged['総Bereich']**(1/3)),
Zusammengesetzte Funktion_Population_Bereich=(merged['Population総数']**(2/3))*(merged['総Bereich']**(1/3)),
Zusammengesetzte Funktion_Wagen_Wohngebiet=(merged['Insgesamt insgesamt']**(2/3))*(merged['Wohngebiet']**(1/3)),
Zusammengesetzte Funktion_Population_Wohngebiet=(merged['Population総数']**(2/3))*(merged['Wohngebiet']**(1/3)),
Fläche Quadratwurzel=np.sqrt(merged['Gesamtfläche']),
Quadratwurzel des Wohngebiets=np.sqrt(merged['Wohngebiet']),
Signalschätzung= np.around(0.0027*merged['Insgesamt insgesamt'].astype(np.float),0)        
             )

    people_signal = linear_model.LinearRegression(fit_intercept=False)
    car_signal = linear_model.LinearRegression(fit_intercept=False)
    shape_signal = linear_model.LinearRegression(fit_intercept=False)
    liveshape_signal = linear_model.LinearRegression(fit_intercept=False)
    people_shape = linear_model.LinearRegression(fit_intercept=False)
    car_shape = linear_model.LinearRegression(fit_intercept=False)
    people_liveshape = linear_model.LinearRegression(fit_intercept=False)
    car_liveshape = linear_model.LinearRegression(fit_intercept=False)

    people = np.array(merged['Gesamtfläche']).reshape(-1,1)
    car = np.array(merged['Insgesamt insgesamt']).reshape(-1,1)
    shape = np.array(merged['Fläche Quadratwurzel']).reshape(-1,1)
    liveshape = np.array(merged['Quadratwurzel des Wohngebiets']).reshape(-1,1)
    peopleShape = np.array(merged['Zusammengesetzte Funktion_Population_Bereich']).reshape(-1,1)
    carShape = np.array(merged['Zusammengesetzte Funktion_Wagen_Bereich']).reshape(-1,1)
    peopleLiveShape = np.array(merged['Zusammengesetzte Funktion_Population_Wohngebiet']).reshape(-1,1)
    carLiveShape = np.array(merged['Zusammengesetzte Funktion_Wagen_Wohngebiet']).reshape(-1,1)
    y_data=np.array(merged['Signalschätzung']).reshape(-1,1)

    people_signal.fit(people,y_data)
    car_signal.fit(car,y_data)
    shape_signal.fit(shape,y_data)
    liveshape_signal.fit(liveshape,y_data)
    people_shape.fit(peopleShape,y_data)
    car_shape.fit(carShape,y_data)
    people_liveshape.fit(peopleLiveShape,y_data)
    car_liveshape.fit(carLiveShape,y_data)

    df_result=pd.DataFrame({
        'Population_Signal':[people_signal.score(people,y_data)],
        'Bereich_Signal':[shape_signal.score(shape,y_data)],
        'Präfekturen':[merged['Präfekturen'][0]],
        'Wagen_Signal':[car_signal.score(car,y_data)],
        'Wohngebiet_Signal':[liveshape_signal.score(liveshape,y_data)],
        'Zusammengesetzte Funktion_Population_Bereich':[people_shape.score(peopleShape,y_data)],
        'Zusammengesetzte Funktion_Wagen_Bereich':[car_shape.score(carShape,y_data)],
        'Zusammengesetzte Funktion_Population_Wohngebiet':[people_liveshape.score(peopleLiveShape,y_data)],
        'Zusammengesetzte Funktion_Wagen_Wohngebiet':[car_liveshape.score(carLiveShape,y_data)]
    })

    static_data = static_data.append(df_result)

static_data.to_csv('static_data.csv',encoding='shift_jis')

CSV-Daten lesen

with codecs.open(<Fahrzeugdaten>, "r", "Shift-JIS", "ignore") as file:   #http://qiita.com/niwaringo/items/d2a30e04e08da8eaa643
    df = pd.read_table(file, delimiter=",")

Wechseln Sie zu einer Form, die einfach zu verwenden ist

hokkaido_data = df[(df['Regionales Verkehrsbüro'].str.contains('Nordsee')) 
                              & (df['Gemeinde'].str.contains('Stadt$') | df['Gemeinde'].str.contains('Gesamt$') | df['Gemeinde'].str.contains('Stadt, Dorf$') | df['Gemeinde'].str.contains('Dorf$'))
                              & (df['Unternehmensart'].str.contains('Gesamt')) ]
#Das lokale Verkehrsbüro umfasst die Nordsee&& (Der Name der Stadt endet mit der Stadt|Der Name der Stadt umfasst die Grafschaft=>Der Name der Gemeinde endet mit Stadt, Dorf|Endet in der Stadt, im Dorf) &&Der Geschäftstyp ist insgesamt
#Zeilenende-Übereinstimmung

Richten Sie die Namen der Tabellen für den Join aus (suchen, ersetzen)

Quelle: http://sinhrks.hatenablog.com/entry/2014/12/06/233032

Daher wird durch Hinzufügen des Zugriffs "str" die Stapelverarbeitung von Zeichenketten möglich.

df[(df['Regionales Verkehrsbüro'].str.contains('^Nordsee'))].Regionales Verkehrsbüro.str.replace(r'^Nordsee道', '')
#Alle"Hokkaido Transport Bureau"Zu"Transportbüro"Ersetzen mit

Konvertiert eine durch Kommas getrennte dreistellige Zeichenfolge in eine Zahl

dfx.iloc[:,4:] =    # iloc()Da der mit extrahierte Slice kein Slice ist, kann der Wert direkt geändert werden.
dfx.iloc[:,4:].applymap(lambda x: re.sub(',','',x))      
.applymap(lambda x: re.sub('-','',x))
.convert_objects(convert_numeric=True)

Lineare Regression

from sklearn import linear_model

lm = linear_model.LinearRegression(fit_intercept=False) #Option zum Setzen des Abschnitts auf 0

x_data=merged['Wohngebiet']
y_data=merged['Gesamtbevölkerung']

#Da sklearn nur mit numpy umgehen kann, ändern Sie es in numpy type. Ändern Sie es auch neu, da es in Form von Spalten anstelle von Zeilen vorliegen muss.
x_data = np.array(x_data).reshape(-1,1) 
y_data = np.array(y_data).reshape(-1,1)

lm.fit(x_data,y_data)
print(lm.coef_)      #Partieller Regressionskoeffizient
print(lm.intercept_) #=> 0.0 Natürlich, weil der Abschnitt auf 0 gesetzt ist
print(lm.score(x_data,y_data)) #Entscheidungskoeffizient

Referenz

http://qiita.com/irs/items/4ebbfd8bef63db1892fb http://qiita.com/Attsun/items/5af3efdc241aa2fd3959 http://sinhrks.hatenablog.com/entry/2015/01/28/073327 Über die anonyme Funktion Lambda http://www.lifewithpython.com/2013/01/python-anonymous-function-lambda.html

Recommended Posts

Vorverarbeitung von Präfekturdaten
Visualisierung von Daten nach Präfektur
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Korrelation durch Datenvorverarbeitung
Datenbereinigung 3 Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Auswahl der Messdaten
Informationen zur Datenvorverarbeitung von Systemen, die maschinelles Lernen verwenden
Leistungsüberprüfung der Datenvorverarbeitung in der Verarbeitung natürlicher Sprache
Überblick über die Verarbeitung natürlicher Sprache und ihre Datenvorverarbeitung
Vor- und Nachbearbeitung von Pytest
Experiment zur Optimierung der Tensorflow-Daten
Fourier-Transformation von Rohdaten
Vorverarbeitung von Textdaten (Vektorisierung, TF-IDF)
Durchschnittliche Schätzung der begrenzten Daten
Über die Datenverwaltung von Amboss-App-Server
Wahrscheinlichkeitsvorhersage von unausgeglichenen Daten
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 2)
Anwendung von Python: Datenbereinigung Teil 3: Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Implementieren Sie die Normalisierung der Vorverarbeitung von Python-Trainingsdaten mit scicit-learn [fit_transform].
Leistungsüberprüfung der Datenvorverarbeitung für maschinelles Lernen (numerische Daten) (Teil 1)
[Python] Taple-Version des Pulldowns der Präfektur
Persönliche Notizen zur Vorverarbeitung von Python Pandas-Daten
Speichersparende Matrixkonvertierung von Protokolldaten
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Differenzierung von Zeitreihendaten (diskret)
10 Auswahlen der Datenextraktion durch pandas.DataFrame.query
Animation von Geodaten durch Geopandas
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.3. Datenvorverarbeitung
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
Datenverarbeitung 2 Analyse verschiedener Datenformate
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Grundlagen der Quanteninformationstheorie: Datenkomprimierung (1)
100 Sprachverarbeitung Knock-91: Vorbereitung von Analogiedaten
Erfassung von Pflanzenwachstumsdaten Erfassung von Daten von Sensoren
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Trennung von Design und Daten in matplotlib
Konvertierung von Zeitdaten in 25-Uhr-Notation
Empfehlung von Altair! Datenvisualisierung mit Python
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Grundlagen der Quanteninformationstheorie: Datenkomprimierung (2)
[Einführung in Data Scientist] Grundlagen von Python ♬
Kenntnis der Verwendung der Aurora Severless Data API
Ein Memorandum über Probleme beim Formatieren von Daten
Scraping Data Wrangling von statistischen Informationen über neue Coronavirus-Infektionen in der Präfektur Yamanashi
[Python] Zeichnen Sie Daten nach Präfektur auf einer Karte (Anzahl der Autos im ganzen Land)