Python讀取csv文件做K-means分析詳情
1.運(yùn)行環(huán)境及數(shù)據(jù)
Python3.7、PyCharm Community Edition 2021.1.1,win10系統(tǒng)。
使用的庫(kù):matplotlib、numpy、sklearn、pandas等
數(shù)據(jù):CSV文件,包含時(shí)間,經(jīng)緯度,高程等數(shù)據(jù)
2.基于時(shí)間序列的分析2D
讀取時(shí)間列和高程做一下分析:
代碼如下:
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans, MiniBatchKMeans
import pandas as pd
?
if __name__ == "__main__":
? ? data = pd.read_csv(r"H:\CSDN_Test_Data\UseYourTestData.csv")
? ? x, y = data['Time (sec)'], data['Height (m HAE)']
? ? n = len(x)
? ? x = np.array(x)
? ? x = x.reshape(n, 1)#reshape 為一列
? ? y = np.array(y)
? ? y = y.reshape(n, 1)#reshape 為一列
? ? data = np.hstack((x, y)) #水平合并為兩列
? ? k = 8 ?# 設(shè)置顏色聚類的類別個(gè)數(shù)(我們分別設(shè)置8,16,32,64,128進(jìn)行對(duì)比)
? ? cluster = KMeans(n_clusters=k) ?# 構(gòu)造聚類器
? ? C = cluster.fit_predict(data)
? ? # C_Image = cluster.fit_predict(data)
? ? print("訓(xùn)練總耗時(shí)為:%s(s)" % (Trainingtime).seconds)
? ? plt.figure()
? ? plt.scatter(data[:, 0], data[:, 1], marker='o', s=2, c=C)
? ? plt.show()結(jié)果展示:
2.1 2000行數(shù)據(jù)結(jié)果展示

2.2 6950行數(shù)據(jù)結(jié)果展示

2.3 300M,約105萬(wàn)行數(shù)據(jù)結(jié)果展示
CPU立馬90%以上了。大約1-2分鐘,也比較快了。

markersize有些大了, 將markersize改小一些顯示,設(shè)置為0.1,點(diǎn)太多還是不明顯。

3.經(jīng)緯度高程三維坐標(biāo)分類顯示3D-空間點(diǎn)聚類
修改代碼,讀取相應(yīng)的列修改為X,Y,Z坐標(biāo):如下:
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans, MiniBatchKMeans
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
?
if __name__ == "__main__":
? ? data = pd.read_csv(r"H:\CSDN_Test_Data\UseYourTestData.csv")
? ? x, y,z = data['Longitude (deg)'],data['Latitude (deg)'], ?data['Height (m HAE)']
? ? n = len(x)
? ? x = np.array(x)
? ? x = x.reshape(n, 1)#reshape 為一列
? ? y = np.array(y)
? ? y = y.reshape(n, 1)#reshape 為一列
? ? z = np.array(z)
? ? z = z.reshape(n, 1) ?# reshape 為一列
? ? data = np.hstack((x, y, z)) #水平合并為兩列
? ? k = 8 ?# 設(shè)置顏色聚類的類別個(gè)數(shù)(我們分別設(shè)置8,16,32,64,128進(jìn)行對(duì)比)
? ? cluster = KMeans(n_clusters=k) ?# 構(gòu)造聚類器
? ? C = cluster.fit_predict(data)
?
? ? # C_Image = cluster.fit_predict(data)
? ? print("訓(xùn)練總耗時(shí)為:%s(s)" % (Trainingtime).seconds)
? ? fig = plt.figure()
? ? ax = Axes3D(fig)
?
? ? ax.scatter(data[:, 0], data[:, 1],data[:, 2], s=1, c=C)
? ? # 繪制圖例
? ? ax.legend(loc='best')
? ? # 添加坐標(biāo)軸
? ? ax.set_zlabel('Z Label', fontdict={'size': 15, 'color': 'red'})
? ? ax.set_ylabel('Y Label', fontdict={'size': 15, 'color': 'red'})
? ? ax.set_xlabel('X Label', fontdict={'size': 15, 'color': 'red'})
? ? plt.show()3.1 2000行數(shù)據(jù)結(jié)果顯示
由于經(jīng)度在緯度方向上在17m范圍類,所以立體效果較差,可以換其他數(shù)據(jù)測(cè)試。


3.2 300M的CSV數(shù)據(jù)計(jì)算顯示效果
105萬(wàn)行數(shù)據(jù)顯示結(jié)果:


到此這篇關(guān)于Python讀取csv文件做K-means分析詳情的文章就介紹到這了,更多相關(guān)Python讀取csv文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)
JSON 是文本,使用 JavaScript 對(duì)象表示法編寫(xiě),Python 有一個(gè)內(nèi)置的 json 包,可用于處理 JSON 數(shù)據(jù),本文給大家介紹使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧2023-11-11
python畫(huà)圖把時(shí)間作為橫坐標(biāo)的方法
今天小編就為大家分享一篇python畫(huà)圖把時(shí)間作為橫坐標(biāo)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python Web框架之Django框架cookie和session用法分析
這篇文章主要介紹了Python Web框架之Django框架cookie和session用法,結(jié)合實(shí)例形式分析了Django框架cookie和session的常見(jiàn)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08
Python代碼執(zhí)行時(shí)間測(cè)量模塊timeit用法解析
這篇文章主要介紹了Python代碼執(zhí)行時(shí)間測(cè)量模塊timeit用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
使用Python實(shí)現(xiàn)一個(gè)圖片查看器
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片查看器,并且可以實(shí)現(xiàn)圖片放大與縮小功能,感興趣的小伙伴可以了解下2025-02-02

