#python #csv #k-means
#питон #csv #к-означает
Вопрос:
В настоящее время я работаю над проектом, в котором мне нужно собрать координаты и перенести их в файл csv. Я использую алгоритм k-средних для поиска координат (центроидов большей коллекции координат). На выходе получается список с координатами. Сначала я хотел просто скопировать его в файл excel, но это сработало не так хорошо, как я хотел.
Это мой код:
df = pd.read_excel("centroid coordinaten excel lijst.xlsx") df.head(n=16) plt.scatter(df.X,df.Y) km = KMeans(n_clusters=200) print(km) y_predict = km.fit_predict(df[['X','Y']]) print(y_predict) df['cluster'] = y_predict kmc = km.cluster_centers_ print(kmc) #The output kmc is the list with coordinates and it looks like this: [[ 4963621.73063468 52320928.30284858] [ 4981357.33667335 52293627.08917835] [ 4974134.37538941 52313274.21495327] [ 4945992.84398977 52304446.43606138] [ 4986701.53977273 52317701.43831169] [ 4993362.9143898 52296985.49271403] [ 4949408.06109325 52320541.97963558] [ 4966756.82872596 52301871.5655048 ] [ 4980845.77591313 52324669.94175716] [ 4970904.14472671 52292401.47190146]]
Есть ли кто-нибудь, кто знает, как преобразовать вывод «kmc» в файл csv.
Заранее спасибо!
Ответ №1:
Вы можете использовать csv
библиотеку следующим образом:
import csv kmc = [ [4963621.73063468,52320928.30284858], [4981357.33667335,52293627.08917835], [4974134.37538941,52313274.21495327], [4945992.84398977,52304446.43606138], [4986701.53977273,52317701.43831169], [4993362.9143898,52296985.49271403], [4949408.06109325,52320541.97963558], [4966756.82872596,52301871.5655048], [4980845.77591313,52324669.94175716], [4970904.14472671,52292401.47190146], ] with open('output.csv', 'w', newline='') as f_output: csv_output = csv.writer(f_output) csv_output.writerow(['lat', 'long']) csv_output.writerows(kmc)
Даю вам output.csv
содержащее:
lat,long 4963621.73063468,52320928.30284858 4981357.33667335,52293627.08917835 4974134.37538941,52313274.21495327 4945992.84398977,52304446.43606138 4986701.53977273,52317701.43831169 4993362.9143898,52296985.49271403 4949408.06109325,52320541.97963558 4966756.82872596,52301871.5655048 4980845.77591313,52324669.94175716 4970904.14472671,52292401.47190146
Я предлагаю вам указать полный путь к выходному файлу, чтобы убедиться, что у вас есть разрешение на запись. Или, как предлагалось, используйте sudo
. В качестве альтернативы вы можете добавить в начало следующее:
import os os.chdir(os.path.dirname(os.path.abspath(__file__)))
Это гарантирует, что выходные данные будут находиться в той же папке, что и ваш сценарий.
Комментарии:
1. Большое, очень, очень вам спасибо. Вы понятия не имеете, как сильно помогли мне с моей диссертацией. Искренне ваш, новичок на питоне
2. Не за что!