首页 > 其他分享 >第三章 数据探索(绘图)

第三章 数据探索(绘图)

时间:2023-02-25 20:44:31浏览次数:25  
标签:10 plt 第三章 探索 学号 绘图 pd import data

 1 import pandas as pd
 2 catering_sale = 'E:/anaconda3/jupyterFile/数据分析/catering_sale.xls' # 餐饮数据
 3 data = pd.read_excel(catering_sale, index_col='日期')#读取数据,指定“日期列为索引列”
 4 print(data.describe())
 5 '''
 6 describe()函数输出:
 7 count:数量统计,此列共有多少有效值
 8 unipue:不同的值有多少个
 9 std:标准差
10 min:最小值
11 25%:四分之一分位数
12 50%:二分之一分位数
13 75%:四分之三分位数
14 max:最大值
15 mean:均值
16 '''

 1 import matplotlib.pyplot as plt #导入图库
 2 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
 3 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
 4 
 5 plt.figure()
 6 p = data.boxplot(return_type='dict') #画箱型图
 7 x = p['fliers'][0].get_xdata()
 8 y = p['fliers'][0].get_ydata()
 9 y.sort()
10 '''
11 用annotate添加注释
12 其中有些相近的点,注释会出现重叠,难以看清,需要一些技巧来控制
13 以下参数都是经过调试的,需要具体问题具体调试
14 
15 '''
16 for i in range(len(x)):
17     if i>0:
18         plt.annotate(y[i], xy=(x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
19     else:
20         plt.annotate(y[i], xy=(x[i],y[i]), xytext = (x[i]+0.08, y[i]))
21         
22 plt.title('学号3140',fontsize=20)
23 plt.show() #展示箱型图

 1 # 代码3-3 捞起生鱼片的季度销售情况
 2 import pandas as pd
 3 import numpy as np
 4 catering_sale = 'E:/anaconda3/jupyterFile/数据分析/catering_fish_congee.xls'  # 餐饮数据
 5 data = pd.read_excel(catering_sale,names=['date','sale'])  # 读取数据,指定“日期”列为索引
 6 
 7 bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
 8 labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)',
 9        '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] 
10 
11 data['sale分层'] = pd.cut(data.sale, bins, labels=labels) # cut 分层标记
12 print(data)
13 aggResult = data.groupby(by=['sale分层'])['sale'].agg([('sale', np.size)]) # groupby 分组(根据sale分层来分组)
14 print(aggResult)
15 pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100 
16 print(pAggResult)
17 
18 import matplotlib.pyplot as plt
19 plt.figure(figsize=(10,6))  # 设置图框大小尺寸
20 pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10)  # 绘制频率直方图
21 plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
22 plt.title('季度销售额频率分布直方图 学号3140',fontsize=20)
23 plt.show()

 1 # 不同菜品在某段时间的销售量分布情况
 2 
 3 catering_dish_profit = 'E:/anaconda3/jupyterFile/数据分析/data/catering_dish_profit.xls' # 餐饮数据
 4 data = pd.read_excel(catering_dish_profit) # 读取数据
 5 print(data)
 6 # 绘制饼图
 7 x = data['盈利']
 8 labels = data['菜品名']
 9 
10 plt.figure(figsize=(8,6)) # 设置画布大小
11 plt.pie(x,labels = labels) # 绘制饼图
12 plt.title('菜品销售量分布(饼图) 学号3140') # 设置标题
13 plt.axis('equal')
14 plt.show()

 

 1 # 绘制条形图
 2 x = data['菜品名']
 3 y = data['盈利']
 4 plt.figure(figsize=(8,4))
 5 plt.bar(x,y)
 6 plt.rcParams['font.sans-serif'] = 'SimHei'
 7 plt.xlabel('菜品')  # 设置x轴标题
 8 plt.ylabel('销量')  # 设置y轴标题
 9 plt.title('菜品销售分布(条形图)学号3140') # 设置标题
10 plt.show()

 1 # 不同部门各月份的销售对比情况
 2 # 部门之间销售金额比较
 3 import pandas as pd
 4 import matplotlib.pyplot as plt
 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
 7 
 8 data = pd.read_excel("E:\\anaconda3\\jupyterFile\\数据分析\\data\\dish_sale.xls")
 9 plt.figure(figsize=(8,4))
10 plt.plot(data['月份'], data['A部门'], color = 'green', label = 'A部门', marker = 'o')
11 plt.plot(data['月份'], data['B部门'], color = 'red', label = 'B部门', marker = 's')
12 plt.plot(data['月份'], data['C部门'], color = 'skyblue', label = 'C部门', marker = 'x')
13 plt.legend() # 显示图例
14 plt.ylabel('销售额(万元)')
15 plt.title('学号3140')
16 plt.show()
17 
18 # B部门各年份之间销售今额的比较
19 data = pd.read_excel("E:\\anaconda3\\jupyterFile\\数据分析\\data\\dish_sale_b.xls")
20 plt.figure(figsize=(8,4))
21 plt.plot(data['月份'], data['2012年'], color = 'green', label = '2012年', marker = 'o')
22 plt.plot(data['月份'], data['2013年'], color = 'red', label = '2013年', marker = 's')
23 plt.plot(data['月份'], data['2014年'], color = 'skyblue', label = '2014年', marker = 'x')
24 plt.legend() # 显示图例
25 plt.ylabel('销售额(万元)')
26 plt.title('学号3140')
27 plt.show()

 1 # 3-7 某单位日用电量预测分析
 3 import pandas as pd
 4 import matplotlib.pyplot as plt
 5 
 6 df_normal = pd.read_csv('E:\\anaconda3\\jupyterFile\\数据分析\\data\\user.csv')
 7 plt.figure(figsize=(8,4))
 8 plt.plot(df_normal["Date"],df_normal["Eletricity"])
 9 plt.xlabel("日期")
10 # 设置x轴刻度间隔
11 x_major_locator = plt.MultipleLocator(7)
12 ax = plt.gca()
13 ax.xaxis.set_major_locator(x_major_locator)
14 plt.ylabel("每日电量")
15 plt.title("正常用户电量趋势 学号3140")
16 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
17 # plt.axis('equal')
18 plt.show()
19 
20 # 窃电用户用电趋势分析
21 df_steal = pd.read_csv('E:\\anaconda3\\jupyterFile\\数据分析\\data\\Steal user.csv')
22 plt.figure(figsize=(10,9))
23 plt.plot(df_normal["Date"],df_normal["Eletricity"])
24 plt.xlabel("日期")
25 plt.ylabel("日期")
26 # 设置x轴刻度间隔
27 x_major_locator = plt.MultipleLocator(7)
28 ax = plt.gca()
29 ax.xaxis.set_major_locator(x_major_locator)
30 plt.title("窃电用户电量趋势 学号3140")
31 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
32 plt.show()

 1 # 3-8 菜品盈利数据帕累托图
 2 import pandas as pd
 3 
 4 # 初始数据化
 5 dish_profit = 'E:\\anaconda3\\jupyterFile\\数据分析\\data\\catering_dish_profit.xls'
 6 data = pd.read_excel(dish_profit, index_col='菜品名')  # 指定“菜品名”为索引列
 7 data = data['盈利'].copy()
 8 data.sort_values(ascending=False)
 9 
10 import matplotlib.pyplot as plt
11 plt.rcParams['font.sans-serif'] = ['SimHei']
12 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
13 
14 plt.figure()
15 data.plot(kind='bar')
16 plt.ylabel('盈利(元)')
17 p = 1.0 * data.cumsum()/data.sum()
18 p.plot(color ='r', secondary_y=True, style='-o', linewidth=2)
19 plt.annotate(format(p[6], '.4%'), xy=(6, p[6]), xytext=(6*0.9, p[6]*0.9), 
20              arrowprops = dict(arrowstyle = "->", connectionstyle = "arc3, rad = .2" ))
21             # 添加注释,即85%处的标记。这里包括了指定箭头样式
22 plt.ylabel('盈利(比例)')
23 plt.title('学号3140')
24 plt.show()

 

 1 # 绘制正弦虚线
 2 import matplotlib.pyplot as plt #导入图库
 3 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
 4 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
 5 plt.figure(figsize=(7,5)) # 创建图像区域,指定比例
 6 import numpy as np
 7 x = np.linspace(0, 2*np.pi, 50) # x坐标输入
 8 y = np.sin(x)
 9 plt.plot(x, y, 'bp--') #控制图形格式为蓝色带星虚线,显示正弦曲线
10 plt.title('学号3140')
11 plt.show()

 1 # 绘制饼图
 2 import matplotlib.pyplot as plt #导入图库
 3 labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' #定义标签
 4 sizes = [15, 30, 45, 10] # 每一块的比例
 5 colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 每一块的颜色
 6 explode = (0, 0.1, 0, 0) # 突出显示,这里仅仅突出显示第二块
 7 
 8 plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
 9 plt.axis('equal') # 显示为圆(避免比例压缩为椭圆)
10 plt.title('学号3140')
11 plt.show()

 

1 # 二维条形直方图
2 import matplotlib.pyplot as plt #导入图库
3 import numpy as np
4 x = np.random.randn(1000) # 1000个服从正态分布的随机数
5 plt.hist(x, 10) # 分成10组绘制直方图
6 plt.title('学号3140')
7 plt.show()

 

1 # 箱型图
2 import matplotlib.pyplot as plt #导入图库
3 import pandas as pd
4 import numpy as np
5 x = np.random.randn(1000) # 1000个服从正态分布的随机数
6 D = pd.DataFrame([x, x+1]).T # 构造两列的DataFrame
7 D.plot(kind = 'box') # 调用Series内置的绘图方法画图,用kind参数指定箱型图(box)
8 plt.title('学号3140')
9 plt.show()

 

 

 

 1 # 3-20 使用plot(logy=True)函数进行绘图
 2 import matplotlib.pyplot as plt #导入图库
 3 import pandas as pd
 4 import numpy as np
 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
 7 
 8 x = pd.Series(np.exp(np.arange(20))) # 原始数据
 9 plt.figure(figsize=(8,9))
10 ax1 = plt.subplot(2, 1, 1)
11 x.plot(label='原始数据图', legend=True)
12 plt.title('学号3140')
13 
14 ax1 = plt.subplot(2, 1, 2)
15 x.plot(logy=True, label='对数数据图', legend=True)
16 plt.title('学号3140')
17 plt.show()

 

 

 

 1 # 3-21 误差棒图
 2 import matplotlib.pyplot as plt #导入图库
 3 import pandas as pd
 4 import numpy as np
 5 plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
 6 plt.rcParams['axes.unicode_minus'] = False #用来显示负号
 7 
 8 error = np.random.randn(10) # 定义误差列
 9 y = pd.Series(np.sin(np.arange(10))) #均值数据列
10 y.plot(yerr=error) # 绘制误差图
11 plt.title('学号3140')
12 plt.show()

 

 

 

 小结

本章从应用的角度出发,从数据质量分析和数据特征分析两个方面对数据进行探索分析,最后介绍了Python常用的数据探索函数及案例。

在数据可视化中,由于我们主要使用pandas作为数据探索和分析工具,因此介绍绘图工具都是matplotlib和pandas结合使用。

 

标签:10,plt,第三章,探索,学号,绘图,pd,import,data
From: https://www.cnblogs.com/hxq----1094552116/p/17154879.html

相关文章

  • python数据的基础绘图分析
    importpandasaspddf=pd.read_excel(r"C:\Users\ying\Desktop\catering_sale.xls")  print(df.describe())销量count200.000000mean2755......
  • 用Python绘图(数据分析与挖掘实战)
    代码1:餐饮日销额数据异常值检测(箱型图)importpandasaspdimportnumpyasnpcatering_sale="D:\\360MoveData\\Users\\86130\\Documents\\TencentFiles\\226875669......
  • stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
    文章目录​​一、三种定时器的区别​​​​二、通用定时器特点​​​​2.1功能特点描述​​​​2.2计数器模式​​​​三、通用定时器工作过程​​​​四、附​​一、三种......
  • stm32f407探索者开发板(二十一)——窗口看门狗
    文章目录​​一、窗口看门狗概述​​​​1.1看门狗框图​​​​1.2窗口看门狗工作过程总结​​​​1.3超时时间​​​​1.4为什么需要窗口看门狗​​​​1.5其他注意事......
  • stm32f407探索者开发板(二十)——独立看门狗实验
    文章目录​​一、独立看门狗概述​​​​1.1独立看门狗​​​​二、常用寄存器和库函数配置​​​​2.1独立看门狗框图​​​​2.2键值寄存器IWDG_KR​​​​2.3预分频......
  • 第三章 数据链路层
    一、数据链路层概述链路就是从一个结点到相邻节点的一段物理线路,中间没有其他任何的交换节点数据链路是指把实现通信协议的硬件和软件加到链路上,就构成了数据链路数据......
  • 第三章 计算机进行小数运算时出错的原因
    第三章观后感想:      计算机之所以会出现运算错误的原因是因为有一些十进制数的小数无法转换成二进制数,计算机是个功能有限的机器设备,无法处理无限循环的小数......
  • Openfoam UPstream类探索
    前言上篇文章我们大体捋顺了Pstream类,但上篇没有讲到的是Pstream类很多东西是从UPstream类继承来的这次我们大体看一下UPstream类,以避免Pstream类内很多继承来的东西不......
  • 如何利用Python分析数据--绘图
    一、前言1)本文需要了解Python相关的基础知识。2))本文参考快速入门指南—Matplotlib3.7.0文档,实现利用Python完成日常的图表绘制。二、基础知识1)本文的......
  • 《程序是怎样跑起来的》第三章读后感
    在第三章中主要讲述了计算机进行小数运算时出错的原因,内容主要有以下:大家可能会认为“万能的计算机是不会出现计算错误的”。但实际上,依然存在程序运行后无法得到正确数值......