当前位置:   article > 正文

python数据可视化_数据可视化代码

数据可视化代码

目录

一 导入库清单

二 科学计算库

三 数据可视化


一 导入库清单

  1. import matplotlib.pyplot as plt
  2. import matplotlib as mpl
  3. import random
  4. import numpy as np

二 科学计算库

注释部分代码按照实际需求,取消注释即可运行。

  1. import numpy as np
  2. """
  3. 关于numpy:
  4. 1,一个科学计算库,底层使用C语言实现,计算效率非常高;
  5. 2,numpy比较重要的数据结构是数组,底层大部分算法基于数组实现;
  6. 3,numpy开源免费;
  7. """
  8. # 创建一维数组
  9. # a = np.array([1, 3, 5, 7], dtype=np.int64) # dtype=np.int64把里面的每一个元素指定为64位
  10. # print(a, a.dtype) # a.dtype 获取数据的类型是多少位
  11. #
  12. # # 使用arange()函数创建数组
  13. # a = np.arange(10)
  14. # print(a)
  15. #
  16. # # 设定步长
  17. # a = np.arange(start=1, stop=10, step=2)
  18. # print(a)
  19. #
  20. # # 初始值为0,结束值为10,个数为9
  21. # e = np.linspace(0, 10, 9) # 等差数组
  22. # print(e)
  23. #
  24. # # 初始值为0,结束值不为10,个数为9
  25. # e = np.linspace(0, 10, 10, endpoint=False) # 等差数组
  26. # print(e)
  27. #
  28. # # 初始值为0,结束值不为10,个数为9
  29. # e = np.linspace(0, 10, 10, endpoint=False, retstep=True) # 等差数组
  30. # print(e) # (array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]), 1.0) 一个值为数组,一个值为公差
  31. #
  32. # # 等比数组
  33. # log = np.logspace(1, 3, 3) # 开始10**1,结束10**3,创建3个等比数列,公比默认为10
  34. # print(log)
  35. #
  36. # # 等比数组
  37. # log = np.logspace(0, 3, 4, base=2) # 开始10**1,结束10**3,创建3个等比数列,公比设置为2
  38. # print(log)
  39. #
  40. # # 等比数组: endpoint=False不包含2的三次方
  41. # log = np.logspace(0, 3, 3, base=2, endpoint=False) # 开始10**1,结束10**3,创建3个等比数列,公比设置为2
  42. # print(log)
  43. #
  44. # ar = [[1, 2, 3], [2, 4, 6]]
  45. # # 创建二维数组
  46. # b = np.array(ar)
  47. # print(b)
  48. #
  49. # # 二维数组的轴: 0,1 ,二维数组的转置使用数组属性T
  50. # b2 = b.T
  51. # print(b2)
  52. #
  53. # # ones() 根据指定的形状和数据类型生成全为1的数组
  54. # p = np.ones([2, 3]) # 2行3列值全为1的数组
  55. # print(p)
  56. #
  57. # # zeros() 根据指定的形状和数据类型生成全为0的数组
  58. # p = np.zeros([2, 3]) # 2行3列值全为0的数组
  59. # print(p)
  60. #
  61. # # full() 根据指定的形状和数据类型生成全为指定数字的数组
  62. # p = np.full([2, 3], 8) # 2行3列值全为8的数组
  63. # print(p)
  64. #
  65. # # identity() 创建单位矩阵: 对角线元素为1,其他元素为0的矩阵
  66. # p = np.identity(6) # 6行6列单位矩阵
  67. # print(p)
  68. #
  69. # a = np.array([1, 3, 5, 7])
  70. # # 一维数组访问
  71. # print(a[0])
  72. #
  73. # ar = [[1, 2, 3], [2, 4, 6]]
  74. # b = np.array(ar)
  75. # # 二维数组访问
  76. # print(b[0][0], b[1, 2])
  77. #
  78. # # 一维数组的切片访问
  79. # print(a[0:2]) # 切片访问不包含结束位置
  80. #
  81. # print('===========')
  82. # # 二维数组的切片访问
  83. # print(b[0:2, 1:2]) # 切片访问不包含结束位置,相当于输出两个一维数组切片结果的交集,结果为二维数组
  84. # 一维数组布尔索引
  85. a1 = np.array([1, 2, 3, 4, 1, 2, 3, 4, 5, 6])
  86. # b1 = np.array([True, True, False, False])
  87. # print(a1[b1]) #当为true时才取出元素,输出结果[1 2]
  88. # 二维数组布尔索引
  89. # a2 = np.array([[1, 2], [3, 4], [5, 6]])
  90. # b2 = np.array([[True, True], [False, False],[True,True]])
  91. # print(a2[b2]) #当为true时才取出元素,输出结果[1 2 5 6]
  92. # 一维数组花式索引
  93. # a = np.array([1, 2, 3, 4])
  94. # print(a1[a]) # 输出[2 3 4 1]
  95. #
  96. # a2 = np.array([[1, 2], [3, 4]])
  97. # print(a1[a2]) # 输出: [[2 3][4 1]]
  98. # 二维数组花式索引
  99. # ar = np.array([[1, 2, 3],
  100. # [2, 4, 6],
  101. # [1, 2, 3]])
  102. # # 两个一维数组作为索引
  103. # m = np.array([1, 2])
  104. # n = np.array([0, 1])
  105. # print(ar[m, n]) # 输出[2 2]
  106. #
  107. # # 两个二维数组作为索引
  108. # m2 = np.array([[1, 1], [2, 0]])
  109. # n2 = np.array([[1, 0], [1, 0]])
  110. # print(ar[m2, n2]) # 输出[[4 2][2 1]]
  111. # a = np.array([[1, 2], [3, 4]])
  112. # b = np.array([[5, 6]])
  113. # # 连接数组: 需要两个数组维度相同,沿指定轴的索引连接
  114. # ab = np.concatenate((a, b))
  115. # print(ab)
  116. # # 沿垂直堆叠多个数组,1轴上元素个数相同
  117. # ab = np.vstack((a, b))
  118. # print(ab)
  119. # # 0轴上元素个数相同
  120. # ab = np.hstack((a, b.T))
  121. # print(ab)
  122. # 分割数组
  123. # a1 = np.array([0, 5, 4, 2, 6, 7, 98, 8, 9])
  124. # b1 = np.split(a1, 3) # 平均拆分为三个数组
  125. # print(b1)
  126. #
  127. # a1 = np.arange(9) # 随机生成数组
  128. # section = np.array([4, 7])
  129. # b1 = np.split(a1, section) # 平均拆分为三个数组
  130. # print(b1)
  131. # # 垂直分割数组
  132. # a2 = np.array([[1, 2, 3], [4, 5, 6], [6, 7, 8], [8, 9, 11]])
  133. # b3 = np.vsplit(a2, section)
  134. # print(b3)
  135. # # 水平分割数组
  136. # b4 = np.hsplit(a2, section)
  137. # a1 = np.array([0, 5, 4, 2, 6, 7, 98, 8, 9])
  138. # a2 = np.array([0, 5, 4, 2, 6, 7, 98, 8, 9])
  139. # a3 = np.array([[1, 2, 3], [4, 5, 6], [6, 7, 8], [8, 9, 11]])
  140. # a4 = np.array([[1, 2, 3], [4, 5, 6], [6, 7, 8], [8, 9, 11]])
  141. # # 数组运算
  142. # print(a1 + a2) # 输出[ 0 10 8 4 12 14 196 16 18]
  143. # print(a1 ** 2) # 输出[ 0 25 16 4 36 49 9604 64 81]
  144. # print(a3 + a4)
  145. # """
  146. # 输出结果:
  147. # [[ 2 4 6]
  148. # [ 8 10 12]
  149. # [12 14 16]
  150. # [16 18 22]]
  151. # """
  152. # print(a3 + 100) # 相当于每个数组均加上100
  153. # 输出结果
  154. # [[101 102 103]
  155. # [104 105 106]
  156. # [106 107 108]
  157. # [108 109 111]]
  158. # a1 = np.array([0, 5, 4])
  159. # a2 = np.array([5, 8, 9])
  160. # a3 = np.array([[1, 2, 3], [4, 5, 6], [6, 7, 8], [8, 9, 11]])
  161. # a4 = np.array([[1, 2, 3], [4, 5, 6], [6, 7, 8], [8, 9, 11]])
  162. # # 数组的广播
  163. # print(a1 + 2) # 将标量2进行广播,即[2,2,2]+[0, 5, 4]
  164. # print(a1 + a3) # 将a1数组进行广播,分别与二维数组中的每个维度进行运算
  165. # 随机函数
  166. a1 = np.random.rand(10) # 生成随机一维数组,类型是浮点型
  167. # print(a1)
  168. # a2 = np.random.rand(3, 4) # 生成随机二维数组,类型是浮点型
  169. # print(a2)
  170. # a3 = np.random.randint(1, 7, (5,)) # 生成有5个元素的一维数组,每个元素的值范围是0~7
  171. # print(a3)
  172. # a4 = np.random.randint(3, 8, (3, 5)) # 生成三行五列的二维数组,每个元素的值范围在2~8之间
  173. # print(a4)
  174. # a5 = np.random.normal(10, 3, (3, 4)) # 生成一个平均值为10,标准差为3的3行4列的二维数组
  175. # print(a5)
  176. # a6 = np.random.randn(3, 4) # 生成3行4列的标准正态分布的二维函数
  177. # print(a6)
  178. # 数组排序
  179. # a2 = np.random.randint(0, 10, size=(3, 4))
  180. # print(a2)
  181. """
  182. 随机输出结果:
  183. [[5 0 4 2]
  184. [8 1 4 1]
  185. [8 9 3 8]]
  186. """
  187. # a2_s = np.sort(a2, axis=-1) # sort按水平轴(1轴)对数组进行升序排序
  188. # print(a2_s)
  189. # a2_s2 = np.sort(a2, axis=0) # sort按垂直轴(0轴)对数组进行升序排序
  190. # print(a2_s2)
  191. """
  192. 随机输出结果:
  193. [[5 0 3 1]
  194. [8 1 4 2]
  195. [8 9 4 8]]
  196. """
  197. # a2_s3 = np.argsort(a2) # 按行排序,返回排序后的元素的对应元素的索引数组
  198. # print(a2_s3)
  199. """
  200. 索引排序结果:
  201. [[2 0 1 3]
  202. [1 0 2 3]
  203. [3 2 0 1]]
  204. """
  205. # a2_s4 = np.argsort(a2, axis=0) # 按列排序,返回排序后的元素的对应元素的索引数组
  206. # print(a2_s4)
  207. """
  208. 索引排序结果:
  209. [[0 1 2 1]
  210. [1 2 0 2]
  211. [2 0 1 0]]
  212. """
  213. # 数组的聚合函数
  214. # 求和
  215. # a2 = np.array([[1, 2], [2, 3]])
  216. # a3 = np.array([[1, 2], [2, np.nan]])
  217. # print(np.sum(a2)) # 求和: 全部数组元素相加
  218. # print(np.sum(a2, axis=1)) # 求和: 按列全部数组元素相加,返回一维数组
  219. # print(a2.sum(axis=1)) # 求和: 按列全部数组元素相加,返回一维数组
  220. # print(np.nansum(a3)) # 求和: 按列全部数组元素相加并且忽略空值nan,返回一维数组
  221. #
  222. # # 求最大值
  223. # print(np.max(a2))
  224. # print(np.max(a2, axis=1))
  225. # print(a2.max(axis=1))
  226. # print(np.nanmax(a3))
  227. #
  228. # # 求最小值
  229. # print(np.min(a2))
  230. # print(np.min(a2, axis=1))
  231. # print(a2.min(axis=1))
  232. # print(np.nanmin(a3))
  233. #
  234. # # 求平均值
  235. # print(np.mean(a2))
  236. # print(np.mean(a2, axis=1))
  237. # print(a2.mean(axis=1))
  238. # print(np.nanmean(a3))
  239. # a2 = np.array([[1, 2], [3, 4]])
  240. # # 加权平均值
  241. # print(np.mean(a2))
  242. # # print(np.average(a2, axis=1, weights=[[0.7, 0.1], [0.1, 0, 1]]))
  243. # a2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  244. # a3 = np.array([[1, 0, 3], [8, 8, 8], [7, 8, 22]])
  245. # a4 = np.array([[1, 22, 3], [42, 5, 62], [72, 82, 92]])
  246. #
  247. # # 数组保存
  248. # np.save('array_save', a2) # 生成文件array_save.npy
  249. # # 保存多个数组,其中需要指定每一个数组对应的映射名称,读取文件时按照该规则读取数组
  250. # np.savez('arrays', array_a1=a1, array_a2=a2, array_a3=a3)
  251. # # 保存多个数组,并且压缩保存后的文件
  252. # np.savez_compressed('arrays_coms', array_a1=a1, array_a2=a2, array_a3=a3)
  253. # 数组读取
  254. # a2=np.load('array_save.npy')
  255. # print(a2)
  256. # 根据键读取多个数组:未压缩
  257. # a3 = np.load('arrays.npz')
  258. # print(a3['array_a1'])
  259. # print(a3['array_a2'])
  260. # print(a3['array_a2'])
  261. # 根据键读取多个数组:压缩
  262. a4 = np.load('arrays_coms.npz')
  263. print(a4['array_a1'])
  264. print(a4['array_a2'])
  265. print(a4['array_a2'])

数据可视化

注释部分代码按照实际需求,取消注释即可运行。

  1. import matplotlib.pyplot as plt
  2. import matplotlib as mpl
  3. import random
  4. """
  5. 数据清洗: 剔除错误数据
  6. 数据分析可视化流程:
  7. 1,定义分析目标
  8. 2,数据采集及预处理
  9. 3,数据分析挖掘
  10. 4,数据可视化
  11. 常见的可视化形式:
  12. 1,统计图:直方图、折线图、饼图
  13. 2,分布图:热力图、散点图、气泡图
  14. 数据可视化工具:
  15. 1,分析工具:pandas,SciPy , numpy , sklearn
  16. 2,绘图工具:matplotlib, Pychart, reportlab
  17. 3,平台工具:Jupyter Notebook, PyCharm
  18. """
  19. # = [1, 2]
  20. # y = [-3, 4]
  21. plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
  22. plt.rcParams['axes.unicode_minus'] = False
  23. # plt.title('柱状图')
  24. # plt.bar(x, y)
  25. # plt.show()
  26. # plt.rcParams['lines.linewidth'] = 10
  27. # plt.rcParams['lines.linestyle'] = '--'
  28. # plt.title('虚线图')
  29. # plt.plot(x, y)
  30. # plt.show()
  31. # 身高数据
  32. # height = [168, 155, 160, 143, 170, 160, 193, 170, 190, 160, 143, 170, 160, 193, 170, 190]
  33. # bins = range(110, 191,5) # 定义区间
  34. # plt.title('直方图')
  35. # # 绘制直方图
  36. # plt.hist(height, bins=bins)
  37. # plt.show()
  38. # 数据
  39. # classes = ['c1', 'c2', 'c3']
  40. # score = [70, 90, 88]
  41. # #图形配置
  42. # plt.title('条形图') #标题
  43. # plt.xlabel('班级')
  44. # plt.ylabel('成绩')
  45. # # 条形图
  46. # plt.bar(classes, score)
  47. # plt.show()
  48. # 数据
  49. # year = range(2005, 2020)
  50. # height = [168, 155, 160, 143, 170, 160, 193, 170, 190, 160, 143, 170, 160, 193, 170]
  51. # plt.title('折线图')
  52. # plt.plot(year, height)
  53. # plt.show()
  54. # 数据
  55. # labels = ['房贷', '购车', '教育', '饮食']
  56. # data = [4000, 2000, 6000, 1200]
  57. # plt.title('饼图')
  58. # plt.pie(data, labels=labels, autopct='%1.1f%%') # autopct='%1.1f%%'为保留一位小数
  59. # plt.show()
  60. # 数据
  61. # data = [[12.2, 23.4], [14.5, 11.4], [15.8, 22.9]]
  62. # x = [item[0] for item in data]
  63. # y = [item[0] for item in data]
  64. # plt.title('散点图')
  65. # plt.scatter(x, y)
  66. # plt.xlabel('价格(元)')
  67. # plt.ylabel('销售(件)')
  68. # # 在指定的坐标嵌入文字
  69. # plt.text(12, 12, '牙膏')
  70. # plt.text(14, 14, '洗衣粉')
  71. # plt.text(15, 15, '衣服')
  72. # plt.show()
  73. # 数据
  74. # data = [88, 78, 68, 79, 90, 89, 67, 76, 98, 30, 30]
  75. # plt.title('箱线图')
  76. # plt.boxplot(data)
  77. # plt.show()
  78. # 极径和角度数据
  79. # r = [1, 2, 3, 4, 5] # 极径
  80. # theta = [0.0, 1.57, 3.14, 4.71, 6.28]
  81. #
  82. # ax = plt.subplot(111, projection='polar') # 指定坐标轴为极坐标轴
  83. # plt.plot(theta, r) # 绘制极线图
  84. # 指定坐标轴为极坐标轴
  85. # ax = plt.subplot(111, projection='polar')
  86. # # 绘制极坐标轴的示例
  87. # ax.plot([1, 2, 3, 4, 5])
  88. # ax.scatter([0.1, 0.2, 0.3, 0.4, 0.5], [0.6, 0.4, 0.2, 0.8, 0.3])
  89. # plt.title('极线图')
  90. # plt.show() # 显示图形
  91. # 数据
  92. # year = range(2005, 2020)
  93. # height = [168, 155, 160, 143, 170, 160, 193, 170, 190, 160, 143, 170, 160, 193, 170]
  94. # plt.title('阶梯图')
  95. # plt.step(year, height)
  96. # plt.show()
  97. # 图形配置
  98. # x = [1, 2, 3]
  99. # name = ['一班', '二班', '三班']
  100. # y = [70, 90, 88]
  101. # # 柱状图
  102. # plt.bar(x, y)
  103. #
  104. # # 图形配置
  105. # plt.title('成绩柱状图') # 标题
  106. # plt.xlabel('班级')
  107. # plt.ylabel('成绩')
  108. # plt.xticks(x, name) # 设置X轴柱状图名称
  109. # for i in range(1, 4):
  110. # plt.text(i, y[i - 1] + 1, y[i - 1]) # 纵坐标的具体分数
  111. # plt.show()
  112. # 数据: 三个学科的成绩
  113. # ch = [72, 80, 66, 77, 92]
  114. # math = [62, 92, 72, 75, 88]
  115. # eng = [88, 76, 45, 80, 98]
  116. # plt.title('堆积图')
  117. # plt.bar(range(1, 6), ch, color='r', label='语文成绩') # 绘制语文柱状图
  118. # plt.bar(range(1, 6), math, bottom=ch, color='g', label='数学成绩') # bottom=ch在语文柱状图的基础上绘制数学柱状图
  119. # chmath = [ch[i] + math[i] for i in range(5)] # 计算语文和数学成绩之和
  120. # plt.bar(range(1, 6), eng, bottom=chmath, color='b', label='英语成绩') # bottom=chmath在数学和语文之和柱状图的基础上英语柱状图
  121. # plt.show()
  122. # 数据: 三个学科的成绩
  123. # c1 = [72, 80, 66]
  124. # c2 = [62, 92, 72]
  125. # c3 = [88, 76, 45]
  126. # name_list = ['语文', '数学', '英语']
  127. # width = 0.4 # 柱状图宽度
  128. # x = [1, 3, 5] # 柱状图之间的间隔
  129. #
  130. # plt.bar(x, c1, label='c1', fc='r', width=width)
  131. # x = [1.4, 3.4, 5.4]
  132. # plt.bar(x, c2, label='c2', fc='g', width=width)
  133. # x = [1.8, 3.8, 5.8]
  134. # plt.bar(x, c3, label='c3', fc='b', width=width)
  135. # x = [1.4, 3.4, 5.4]
  136. # # 设置横坐标的名称
  137. # plt.xticks(x, name_list)
  138. # # 设置班级颜色
  139. # plt.legend()
  140. # plt.title('分块图-三班级成绩图')
  141. # plt.xlabel('科目')
  142. # plt.ylabel('成绩')
  143. # plt.show()
  144. x = [22, 23, 24, 25, 26, 27, 28, 29, 30] # 随机生成年龄
  145. y = [155, 150, 175, 180, 179, 190, 189, 170, 168] # 随机生成身高
  146. z = [60, 66, 58, 76, 90, 89, 77, 88, 98] # 随机生成体重
  147. # 绘制气泡图: s指定气泡的大小
  148. plt.scatter(x, y, s=z)
  149. plt.title('气泡图')
  150. plt.show()

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

闽ICP备14008679号