Warum werden wissenschaftliche und technologische Berechnungen wie Datenanalysen überhaupt in Python durchgeführt? Dies hängt hauptsächlich von den folgenden zwei Punkten ab.
R ist möglicherweise einfacher, wenn Sie nur Berechnungen mit Datenrahmen durchführen und diese zeichnen. Durch Abschluss der statistischen Analyse mit dem vielseitigen Python kann es jedoch auf einen größeren Bereich von Feldern angewendet werden.
NumPy
Die meisten statistischen Analysen umfassen Vektoroperationen. NumPy bietet ndarray, eine schnelle, speichereffiziente Implementierung mehrdimensionaler Arrays. Es ermöglicht hochdimensionale Vektoroperationen, die mit Arrays und Hash-Objekten, die Programmiersprachen inhärent sind, nicht erreicht werden können. Sie können auch ausgefallene Indexreferenzen erstellen (= Integer-Arrays für Indexreferenzen verwenden).
Da die Berechnung von Wissenschaft und Technologie kompliziert ist, wäre es schwierig, für jedes Element des Vektors eine Schleife zu schreiben. Daher kann gesagt werden, dass die Vektorberechnung nahezu unverzichtbar ist. In NumPy können Sie auch ndarray- und skalare Operationen wie folgt schreiben:
arr = np.array ( [[1., 2., 3.], [4., 5., 6.]] ) #ndarray Objekt
arr * arr #Vektorintegration
# => array([[ 1., 4., 9.],
# [ 16., 25., 36.]])
arr - arr #Vektorsubtraktion
# => array([[ 0., 0., 0.],
# [ 0., 0., 0.]])
1 / arr #Skalar- und Ndarray-Arithmetik
# => array([[ 1. , 0.5 , 0.33333333],
# [ 0.25 , 0.2 , 0.16666667]])
arr2d = np.array ([[1,2,3],[4,5,6],[7,8,9]])
arr2d[:2] #Indexreferenz nach Slice
# => array([[1, 2, 3],
# [4, 5, 6]])
arrf = np.arange(32).reshape((8,4))
arrf # => array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11],
# [12, 13, 14, 15],
# [16, 17, 18, 19],
# [20, 21, 22, 23],
# [24, 25, 26, 27],
# [28, 29, 30, 31]])
arrf[[1,5,7,2]][:,[0,3,1,2]] #Siehe ausgefallener Index
# => array([[ 4, 7, 5, 6],
# [20, 23, 21, 22],
# [28, 31, 29, 30],
# [ 8, 11, 9, 10]])
Während NumPy allein sehr nützlich ist, bietet Pandas eine noch R-ähnliche Datenstruktur. Dies sind die Serie und der DataFrame. Der Begriff Datenrahmen wird auch in R häufig verwendet, sodass diejenigen, die R verwendet haben, damit vertraut sind. Eine Reihe ist ein eindimensionales Array-ähnliches Objekt, und ein Datenrahmen hat eine tabellarische Zeilen- und Spaltendatenstruktur.
Matplotlib, das häufig in Artikeln bis Gestern erwähnt wird, ist eine leistungsstarke Bibliothek zur Datenvisualisierung. Durch die Kombination mit Pandas können Sie verschiedene Datenanalyseergebnisse zeichnen und visualisieren. Lassen Sie uns sofort unsere Hände bewegen, da wir Lehrbücher und offizielle Websites ausführlich erklären werden.
from pylab import *
from pandas import *
import matplotlib.pyplot as plt
import numpy as np
ts = Series(randn(1000), index=date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
ts.plot()
plt.show()
plt.savefig("image.png ")
Um Japanisch mit matplotlib verarbeiten zu können, muss die Schriftart angegeben werden. Versuchen wir es mit Japanisch.
# -*- coding: utf-8 -*-
from pylab import *
from pandas import *
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager #Erforderlich, um Japanisch zu verwenden
fontprop = matplotlib.font_manager.FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf") #Geben Sie den Speicherort der Schriftartdatei an
df = DataFrame(randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
plt.figure()
df.plot()
plt.legend(loc='best')
ax = df.plot(secondary_y=['A', 'B'])
ax.set_ylabel('CD-Verkauf', fontdict = {"fontproperties": fontprop})
ax.right_ax.set_ylabel('AB-Skala', fontdict = {"fontproperties": fontprop})
plt.show()
plt.savefig("image2.png ")
Japanisch wird angezeigt. Eigentlich sollten Sie die Schriftparameter etwas mehr anpassen.
matplotlib ermöglicht auch das Zeichnen von Plots innerhalb von Plots.
df.plot(subplots=True, figsize=(6, 6)); plt.legend(loc='best')
plt.show()
plt.savefig("image3.png ")
fig, axes = plt.subplots(nrows=2, ncols=2)
df['A'].plot(ax=axes[0,0]); axes[0,0].set_title('A')
df['B'].plot(ax=axes[0,1]); axes[0,1].set_title('B')
df['C'].plot(ax=axes[1,0]); axes[1,0].set_title('C')
df['D'].plot(ax=axes[1,1]); axes[1,1].set_title('D')
plt.show()
plt.savefig("image4.png ")
plt.figure();
df.ix[5].plot(kind='bar'); plt.axhline(0, color='k')
plt.show()
plt.savefig("image5.png ")
df2 = DataFrame(rand(10, 4), columns=['a', 'b', 'c', 'd'])
df2.plot(kind='bar');
plt.show()
plt.savefig("image6.png ")
Natürlich können auch Balkendiagramme (beliebige andere) unterzeichnet werden.
df.diff().hist(color='k', alpha=0.5, bins=50)
plt.show()
plt.savefig("image8.png ")
data = Series(randn(1000))
data.hist(by=randint(0, 4, 1000), figsize=(6, 4))
plt.show()
plt.savefig("image9.png ")
matplotlib kann eine Vielzahl anderer Diagramme zeichnen, aber hier sind einige davon.
from pandas.tools.plotting import bootstrap_plot
data = Series(rand(1000))
bootstrap_plot(data, size=50, samples=500, color='grey')
plt.show()
plt.savefig("image12.png ")
df = DataFrame(randn(1000, 10), index=ts.index)
df = df.cumsum()
plt.figure()
df.plot(colormap='jet')
plt.show()
plt.savefig("image13.png ")
dd = DataFrame(randn(10, 10)).applymap(abs)
dd = dd.cumsum()
plt.figure()
dd.plot(kind='bar', colormap='Greens')
plt.show()
plt.savefig("image14.png ")
from pandas.tools.plotting import scatter_matrix
df = DataFrame(randn(1000, 4), columns=['a', 'b', 'c', 'd'])
scatter_matrix(df, alpha=0.2, figsize=(6, 6), diagonal='kde')
plt.show()
plt.savefig("image11.png ")
Wir haben festgestellt, dass NumPy erweiterte Vektoroperationen bietet, Pandas R-ähnliche Datenstrukturen bereitstellt und matplotlib eine leicht verständliche Visualisierung ihrer Berechnungen bietet. Mit einem so leistungsstarken Tool wäre es für die Datenanalyse sehr ermutigend. In der Statistik und beim maschinellen Lernen sind Berechnungen im Zusammenhang mit der linearen Algebra fast unverzichtbar. Es ist jedoch wichtig, sich zuerst mit diesen Bibliotheken vertraut zu machen.
Ausführliche Erläuterungen finden Sie in den Informationen auf jeder offiziellen Website.
NumPy http://www.numpy.org/
pandas http://pandas.pydata.org/
matplotlib http://matplotlib.org/#
Recommended Posts