2017-02-04 17 views
0

У меня есть следующие два кода, которые я написал, и файл excel. Я просто не понимаю, как их объединить, чтобы я мог читать из файла excel и использовать эти числа для создания кластера.Прочитать данные из файла excel для анализа

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() 

Файл первенствует изображения: Excel image

Это осложняется тем, что я должен прочитать эту одну строку данных, а затем сделать кластеры. Также мне нужно пропустить строки и столбцы, чтобы их прочитать.

+0

В вашем коде кажется, что вы не используете данные, загруженные из файла excel, так? Что именно вы хотите сделать с этими данными? – pbreach

+0

Да. Данные, которые у меня есть для этого кода кластеризации, являются просто образцом. Тот, который находится в файле excel, является правильным. Код определенно нуждается в модификации, но я зациклился на том, как объединить эти два кода. Я очень хочу читать данные Excel и создавать кластеры. – DD1

+0

Хорошо, не проблема, так что представляют цифры в файле? Вам понадобятся предсказатель и предсказание. В вашем примере у вас несколько x, y пар. В данных excel кажется, что имеется только один столбец данных. – pbreach

ответ

1

Если вы не против использования pandas вы можете использовать функцию read_excel, выполнив:

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]) 

Таким образом, вы можете иметь дело с пустой колонки, а также метки заголовка и данных одновременно , Оттуда вы можете получить доступ к данным через df.values в виде Numpy массива, или получить список списков (у, х) пара, выполнив:

pairs = df.values.tolist() 

Вы также можете использовать xlrd перебора строк и/или столбцы, используя соответствующие диапазоны. Например, если вы хотите читать только данные в вашем примере файла в список списков вы могли бы сделать что-то вроде:

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)]) 

Там, наверное, лучший способ сделать это в xlrd, но я редко когда-либо использовать Это.

+0

Спасибо! Я получил эту часть. Я попытаюсь сделать код кластера. Если я не получу его, я отредактирую сообщение с ним. – DD1

+1

Это было просто, я просто должен был сделать «X = пары» – DD1

+0

И если вам нужно (x, y) пар вместо (y, x), вы можете сделать 'X = [p [:: - 1] для p в парах ] ' – pbreach