当前位置:   article > 正文

用python统计数据并画出图表分析数据_python统计数据并以表格形式显示统计结果

python统计数据并以表格形式显示统计结果

  这里使用的数据是某地区影响发生火灾的因素以及火灾情况。

  总体思想是创建一个类,在类里面创建处理数据的函数。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. from sklearn.cluster import KMeans #引入sklearn模块里的机器学习算法Kmeans
  5. class fireArea():
  6. def detectDate(self,filePath):
  7. '''
  8. 探索数据
  9. :param filePath:
  10. :return:
  11. '''
  12. df = pd.read_csv(filePath)
  13. describe = df.describe(include='all')
  14. print(describe.T)
  15. df.to_excel('data/forestfires.xls')
  16. pass
  17. def cleanData(self, filePath):
  18. '''
  19. :param filePath:
  20. :return:
  21. '''
  22. df = pd.read_csv(filePath)
  23. df.to_excel('data/cleaned.xls')
  24. pass
  25. def chooseData(self, filePath):
  26. '''
  27. 拿出自己需要的数据
  28. :param filePath:
  29. :return:
  30. '''
  31. df = pd.read_excel(filePath)
  32. df = df[['FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH', 'wind', 'area']]
  33. df.to_excel('data/coredata.xls')
  34. pass
  35. def standardData(self, filePath):
  36. '''
  37. 一般标准化的方式:(原数据-平均值)/标准差
  38. :param filrPath:
  39. :return:
  40. '''
  41. df = pd.read_excel(filePath)
  42. df = (df - np.mean(df, axis=0))/np.std(df, axis=0)
  43. df[['FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH', 'wind', 'area']].to_excel('data/stdcoredata.xls')
  44. pass
  45. def classifyData(self,filePath, k=8):
  46. df = pd.read_excel(filePath)
  47. kmeans = KMeans(k)
  48. kmeans.fit(df[['FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH', 'wind', 'area']])
  49. print(kmeans.cluster_centers_)
  50. print(kmeans.labels_)
  51. df['label'] = kmeans.labels_
  52. # df.to_excel('data/air_result.xls')
  53. coreData = pd.DataFrame(kmeans.cluster_centers_)
  54. # coreData.to_excel('data/air_core.xls')
  55. coreData = np.array(kmeans.cluster_centers_)
  56. #
  57. #绘制雷达图
  58. #1.组织数据
  59. #构造x轴值
  60. xdata = np.linspace(0, 2*np.pi, k, endpoint=False)
  61. xdata = np.concatenate((xdata, [xdata[0]]))
  62. ydata1 = np.concatenate((coreData[0], [coreData[0][0]]))
  63. ydata2= np.concatenate((coreData[1], [coreData[1][0]]))
  64. ydata3 = np.concatenate((coreData[2], [coreData[2][0]]))
  65. ydata4= np.concatenate((coreData[3], [coreData[3][0]]))
  66. fig = plt.figure()
  67. ax = fig.add_subplot(111, polar=True)
  68. ax.plot(xdata, ydata1, 'b--', linewidth=1, label='customer1')
  69. ax.plot(xdata, ydata2, 'r--', linewidth=1, label='customer2')
  70. ax.plot(xdata, ydata3, 'g--', linewidth=1, label='customer3')
  71. ax.plot(xdata, ydata4, 'o--', linewidth=1, label='customer4')
  72. ax.set_thetagrids(xdata * 180 / np.pi, ['FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH', 'wind', 'area'])
  73. ax.set_rlim(-3, 3)
  74. plt.legend(loc='best')
  75. plt.show()
  76. print(xdata)
  77. pass
  78. pass
  79. if __name__ == '__main__':
  80. ad = fireArea()
  81. # ad.detectDate('data/forestfires.csv')
  82. #ad.cleanData('data/forestfires.csv')
  83. # ad.chooseData('data/cleaned.xls')
  84. #ad.standardData('data/coredata.xls')
  85. ad.classifyData('data/stdcoredata.xls', k=8)
  86. pass

运行结果为:

有一个数据发现它越界了,是因为有一天森林烧毁的面积非常大,这种数据还是有用的数据,不能删除。

下面是处理数据的情况(这个方法适合处理所有类型数据,只需要把相应的元素名变一下,代码稍作改动就好了):

1.原始数据(数据有很多条,这里只是截取一小部分)

2.处理好的数据(去除不要的数据)

3.把需要的数据标准化,方便分类

4.画图

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/681784
推荐阅读
相关标签
  

闽ICP备14008679号