2017-02-04 6 views
0

Ich habe die folgenden zwei Codes, die ich schrieb und die Excel-Datei. Ich verstehe einfach nicht, wie ich sie kombinieren soll, damit ich aus der Excel-Datei lesen kann und mit diesen Zahlen ein Cluster bilden kann.Lesen Sie Daten aus der Excel-Datei zur Analyse

import matplotlib.pyplot as plt 
import xlrd 
from matplotlib import style 
style.use("ggplot") 
from sklearn.cluster import KMeans 

fileWorkspace = 'C://Users/bob/Desktop/' 

pull=[] 
wb1 = xlrd.open_workbook(fileWorkspace + 'try.xlsx') 
sh1 = wb1.sheet_by_index(0) 

for a in range(0,sh1.nrows): 
    for b in range(0,sh1.ncols): 
     pull.append(sh1.cell(a,b).value) 
    print('Finished in row' + str(a)) 


x = [11,19,23,33,44,91,92,90,60,63] 

y = [92,85,22,25,86,78,63,51,66,15] 


X = [list(item) for item in zip(x,y)] 

kmeans = KMeans(n_clusters=3) 
kmeans.fit(X) 

centroids = kmeans.cluster_centers_ 
labels = kmeans.labels_ 

print(centroids) 
print(labels) 

colors = ["g.","r.","y.","c.","m.","k."] 

for i in range(len(X)): 
    print("coordinate:",X[i], "label:", labels[i]) 
    plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 10) 

plt.scatter(centroids[:, 0],centroids[:, 1], marker = "x", s=150, linewidths=5, zorder=10) 
plt.show() 

Die Excel-Datei Bild: Excel image

Es ist kompliziert, weil ich die einzige Reihe von Daten zu lesen und dann Cluster machen. Ich muss auch Zeilen und Spalten überspringen, um sie zu lesen.

+0

In Ihrem Code scheint es, als ob Sie nicht die Daten aus der Excel-Datei geladen sind, ist das richtig? Was genau wollen Sie mit diesen Daten machen? – pbreach

+0

Ja. Die Daten, die ich für diesen Clustercode habe, sind nur Beispiele. Der in der Excel-Datei ist der richtige. Der Code muss definitiv geändert werden, aber ich bin fest, wie diese beiden Codes zu kombinieren sind. Ich möchte diese Excel-Datei lesen und Cluster erstellen. – DD1

+0

Alles klar, kein Problem, was bedeuten die Zahlen in der Datei? Sie benötigen einen Prädiktor und eine Vorhersage. In Ihrem Beispiel haben Sie mehrere x, y-Paare. In den Excel-Daten scheint es nur eine Spalte mit Daten zu geben. – pbreach

Antwort

1

Wenn Sie sich nicht im Gegensatz pandas verwenden, können Sie die read_excel Funktion, indem Sie verwenden:

import pandas as pd 
# Read in data from first sheet 
df = pd.read_excel(filename, sheetname=0, parse_cols='B:D', index_col=0, header=[0,1]) 

diese Weise können Sie mit der leeren Spalte umgehen können sowie die Kopf- und Daten Etiketten zur gleichen Zeit . Von dort können Sie die Daten über df.values in Form eines numpy Array zugreifen können, oder erhalten eine Liste von Listen (y, x) -Paare, indem Sie:

pairs = df.values.tolist() 

Sie auch durch Iterieren durch die Reihen verwenden xlrd und/oder Spalten mit den entsprechenden Bereichen. wenn Sie nur die Daten in der Beispieldatei in eine Liste von Listen lesen in wollten man tun könnte so etwas wie zum Beispiel:

import xlrd 

workbook = xlrd.open_workbook(filename) 
sheet = workbook.sheet_by_index(0) 

pairs = [] 
# Iterate through rows starting at the 3rd row) 
for i in range(2, 15): 
    # Iterate through columns starting at the 3rd column 
    pairs.append([sheet.cell(i, j).value for j in range(2, 4)]) 

Wahrscheinlich gibt es einen besseren Weg, dies in xlrd zu tun, aber ich nur selten nutzen es.

+0

Danke! Ich habe diesen Teil. Ich werde versuchen, den Cluster-Code zu machen. Wenn ich es nicht verstehe, werde ich den Post damit bearbeiten. – DD1

+1

Das war einfach Ich musste einfach 'X = Paare' machen – DD1

+0

Und wenn Sie (x, y) Paare anstelle von (y, x) brauchen, können Sie' X = [p [:: - 1] für p paarweise machen ] ' – pbreach