从excel文件中读取数据以进行分析

时间:2017-02-04 21:22:38

标签: python excel xlrd

我有以下两个代码和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文件图片: Excel image

这很复杂,因为我必须读取单行数据然后创建集群。此外,我必须跳过行和列来阅读它们。

1 个答案:

答案 0 :(得分: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数组的形式访问数据,或通过执行以下操作获取列表(y,x):

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中可能有更好的方法,但我很少使用它。