Datenanalyse Anfänger untersuchten Pandas, indem sie den Zusammenhang zwischen den Ausgaben für Eis pro Haushalt und der Temperatur untersuchten. (Ich kann das Ergebnis irgendwie sehen ...) Die Referenz war "[Einführung in die Datenanalyse durch Python](https://www.amazon.co.jp/Python%E3%81%AB%E3%82%88%E3%82%8B%E3%83%". 87% E3% 83% BC% E3% 82% BF% E8% A7% A3% E6% 9E% 90% E5% 85% A5% E9% 96% 80-% E5% B1% B1% E5% 86% 85 -% E9% 95% B7% E6% 89% BF / dp / 4274222888 / ref = sr_1_3? __ mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & Schlüsselwörter = Python + % E3% 83% 87% E3% 83% BC% E3% 82% BF% E8% A7% A3% E6% 9E% 90 & qid = 1583399806 & sr = 8-3) "und die folgenden zwei Standorte.
Icecream BIZ Statistics Monatliche Durchschnittstemperatur der Meteorologischen Agentur
Ich habe die auf der obigen Website veröffentlichten Daten für 2018 verwendet.
import pandas as pd
import math
import matplotlib.pyplot as plt
import statsmodels.api as sm
ice_url = 'http://www.icecream.or.jp/biz/data/expenditures.html'
temp_url = 'http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?%20prec_no=44&block_no=47662'
ice = pd.read_html(ice_url)[0]
temp = pd.read_html(temp_url)[0]
# [0]Gibt die erste Tabelle in an
ice_2018 = ice.iloc[1:13, 5].astype(float)
temp_2018 = temp.iloc[144, 1:13].astype(float)
#Extrahieren Sie nur 2018-Daten und konvertieren Sie sie in einen numerischen Typ
month = pd.DataFrame([i for i in range(13)])
#Habe n Monate fertig
Jetzt haben Sie die Eisausgaben 2018 pro Haushalt und die durchschnittliche monatliche Temperatur.
icecream = pd.concat([month, ice_2018, temp_2018], axis=1)[1:]
#Kombinieren Sie n Monate, Eisausgaben und Durchschnittstemperatur
x_data, y_data = icecream[144], icecream[5]
avetem, aveex = x_data.sum() / 12, y_data.sum() / 12
#Jährliche Durchschnittstemperatur(avetem)Und Eisausgaben(aveex)Wurde gefragt
Der Korrelationskoeffizient wird wie folgt ausgedrückt, indem die Kovarianz $ S_ {xy} $ usw. verwendet wird.
r = \frac{S_{xy}}{\sqrt{S_{xx}S_{yy}}}
Nach dieser Formel wurde der Korrelationskoeffizient $ r $ ehrlich wie folgt berechnet. (Ich denke, es gibt einen besseren Weg)
for i in range(len(icecream)):
ex = icecream.iloc[i,1] - aveex
tem = icecream.iloc[i,2] - avetem
extem += ex*tem
ex0 += ex**2
tem0 += tem**2
extem0 = math.sqrt(ex0)*math.sqrt(tem0)
r = extem / extem0
# r = 0.8955143151163499
Dieses Ergebnis zeigt, dass eine starke Korrelation zwischen den Ausgaben für Eiscreme und der Temperatur besteht.
Lassen Sie uns abschließend eine Regressionsanalyse mit Pandas ols durchführen.
X = sm.add_constant(x_data) #Es scheint notwendig, einen Abschnitt zu finden
model = sm.OLS(y_data, X)
results = model.fit()
a, b = results.params[0], results.params[1]
# a:Abschnitt b:Neigung
plt.plot(x_data, a+b*x_data)
plt.scatter(icecream[144], icecream[5])
Als Ergebnis wurde eine Regressionslinie wie in der Figur gezeigt erhalten.
In der Tat scheint es, dass Sie Eis essen möchten, wenn es heiß wird.
Recommended Posts