Python读取csv文件做K-means分析详情

 更新时间:2022年03月30日 10:20:12   作者:空中旋转篮球  
这篇文章主要介绍了Python读取csv文件做K-means分析详情,基于时间序列的分析2D读取时间列和高程做一下分析。下文更多详细介绍需要的小伙伴可以参考一下

1.运行环境及数据

Python3.7、PyCharm Community Edition 2021.1.1,win10系统。

使用的库:matplotlib、numpy、sklearn、pandas等

数据:CSV文件,包含时间,经纬度,高程等数据

2.基于时间序列的分析2D

读取时间列和高程做一下分析:

代码如下:

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  # 设置颜色聚类的类别个数(我们分别设置8,16,32,64,128进行对比)
    cluster = KMeans(n_clusters=k)  # 构造聚类器
    C = cluster.fit_predict(data)
    # C_Image = cluster.fit_predict(data)
    print("训练总耗时为:%s(s)" % (Trainingtime).seconds)
    plt.figure()
    plt.scatter(data[:, 0], data[:, 1], marker='o', s=2, c=C)
    plt.show()

结果展示:

2.1 2000行数据结果展示

2.2 6950行数据结果展示

2.3 300M,约105万行数据结果展示

CPU立马90%以上了。大约1-2分钟,也比较快了。

markersize有些大了, 将markersize改小一些显示,设置为0.1,点太多还是不明显。

 3.经纬度高程三维坐标分类显示3D-空间点聚类

修改代码,读取相应的列修改为X,Y,Z坐标:如下:

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  # 设置颜色聚类的类别个数(我们分别设置8,16,32,64,128进行对比)
    cluster = KMeans(n_clusters=k)  # 构造聚类器
    C = cluster.fit_predict(data)
 
    # C_Image = cluster.fit_predict(data)
    print("训练总耗时为:%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')
    # 添加坐标轴
    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行数据结果显示

由于经度在纬度方向上在17m范围类,所以立体效果较差,可以换其他数据测试。

3.2 300M的CSV数据计算显示效果

105万行数据显示结果:

到此这篇关于Python读取csv文件做K-means分析详情的文章就介绍到这了,更多相关Python读取csv文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用os模块实现更高效地读写文件

    Python使用os模块实现更高效地读写文件

    os是python标准库,包含几百个函数常用路径操作、进程管理、环境参数等好多类。本文将使用os模块实现更高效地读写文件,感兴趣的可以学习一下
    2022-07-07
  • Python3.9 beta2版本发布了,看看这7个新的PEP都是什么

    Python3.9 beta2版本发布了,看看这7个新的PEP都是什么

    这篇文章主要介绍了Python3.9 beta2版本发布了,看看这7个新的PEP都是什么,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-06-06
  • 利用PyQt中的QThread类实现多线程

    利用PyQt中的QThread类实现多线程

    本文主要给大家分享的是python实现多线程及线程间通信的简单方法,非常的实用,有需要的小伙伴可以参考下
    2020-02-02
  • Numpy 改变数组维度的几种方法小结

    Numpy 改变数组维度的几种方法小结

    今天小编就为大家分享一篇Numpy 改变数组维度的几种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Flask模板引擎之Jinja2语法介绍

    Flask模板引擎之Jinja2语法介绍

    这篇文章主要介绍了Flask模板引擎之Jinja2语法介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python3.5以上版本lxml导入etree报错的解决方案

    Python3.5以上版本lxml导入etree报错的解决方案

    这篇文章主要介绍了Python3.5以上版本lxml导入etree报错的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法

    详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方

    这篇文章主要介绍了详解Numpy扩充矩阵维度(np.expand_dims, np.newaxis)和删除维度(np.squeeze)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 解决Django连接db遇到的问题

    解决Django连接db遇到的问题

    今天小编大家分享一篇解决Django连接db遇到的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python网络爬虫之获取网络数据

    Python网络爬虫之获取网络数据

    本文介绍了Python中用于获取网络数据的重要工具之一——Requests库,详细讲解了Requests库的基本使用方法、请求方法、请求头、请求参数、Cookies、Session等内容,并结合实例代码展示了Requests库的应用场景
    2023-04-04
  • Python中for循环语句实战案例

    Python中for循环语句实战案例

    这篇文章主要给大家介绍了关于Python中for循环语句的相关资料,python中for循环一般用来迭代字符串,列表,元组等,当for循环用于迭代时不需要考虑循环次数,循环次数由后面的对象长度来决定,需要的朋友可以参考下
    2023-09-09

最新评论