首页 > 编程语言 >python数据处理画图基础

python数据处理画图基础

时间:2023-02-26 15:00:38浏览次数:38  
标签:plot plt python 画图 sale pd 3132 数据处理 data

引入常用的python库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

catering_sale = r'G:\WECHAT\WeChat Files\wxid_op0z9xixesag22\FileStorage\File\2023-02\catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
print(data)
print(data.describe(),data.describe().max()-data.describe().min())

# 代码3-2 餐饮销额数据异常值检测

import matplotlib.pyplot as plt # 导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

plt.figure() # 建立图像
p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() # 从小到大排序,该方法直接改变原对象

'''
用annotate添加注释
其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制
以下参数都是经过调试的,需要具体问题具体调试。
'''


for i in range(len(x)):
if i>0:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))

plt.show() # 展示箱线图

                销量
count   200.000000
mean   2755.214700
std     751.029772
min      22.000000
25%    2451.975000
50%    2655.850000
75%    3026.125000
max    9106.440000 销量    9084.44

 

 箱线图可以看出数据的四分之一位、四分之三位、中位的数据,也可以看出数据的集中程度。

catering_sale = r'G:\WECHAT\WeChat Files\wxid_op0z9xixesag22\FileStorage\File\2023-02\catering_sale.xls'
data0 = pd.read_excel(catering_sale,index_col='日期')
print(data0.describe())
data = pd.read_excel(catering_sale,names=['date','sale'])
bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)','[2000,2500)','[2500,3000)','[3000,3500)','[4000,4500)']
data['sale分层'] = pd.cut(data.sale,bins,labels=labels)
aggResult = data.groupby(by=['sale分层'])['sale'].agg([('sale',np.size)])
pAggResult = round(aggResult/aggResult.sum(),2,)*100
plt.figure(figsize=(15,10))
pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('季度销售 3132',fontsize=20)
plt.show()

 

 频数分布直方图可以看出哪些区间的数据多,从该频数分布直方图可以看出数据集中在2000到3500之间。

catering_dish_profit = 'G:\\WECHAT\\WeChat Files\\wxid_op0z9xixesag22\\FileStorage\\File\\2023-02\\catering_dish_profit(1).xls' # 餐饮数据
data = pd.read_excel(catering_dish_profit) #读取数据
#绘制饼图
x=data['盈利']
labels=data['菜品名']
plt.figure(figsize=(8,6)) #设置画布大小
plt.pie(x,labels=labels) #绘制饼图
plt.rcParams['font.sans-serif']='SimHei'
plt.title('菜品销售量分布(饼图)3132') #设置标题
plt.axis('equal')
plt.show()

 

 饼图可以看出目标分类的占比情况

data = pd.read_excel(r'G:\data\data\dish_sale.xls')
plt.figure(figsize=(8,4))
plt.plot(data['月份'],data['A部门'],color='green',label='A部门',marker='o')
plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='s')
plt.plot(data['月份'],data['C部门'],color='skyblue',label='C部门',marker='x')
plt.legend()
plt.ylabel('销售额(万元)3132')
plt.show()

data = pd.read_excel(r'G:\data\data\dish_sale_b.xls')
plt.figure(figsize=(8,4))
plt.plot(data['月份'],data['2012年'],color='green',label='2012年',marker='o')
plt.plot(data['月份'],data['2013年'],color='red',label='2013年',marker='s')
plt.plot(data['月份'],data['2014年'],color='skyblue',label='2014年',marker='x')
plt.legend()
plt.ylabel('销售额(万元)3132')
plt.show()

 

 

 

 折现图可以很好的观察数据的趋势以及变化情况。方便用户通过数据推测整体的趋势。

df_normal = pd.read_csv(r'G:\data\data\user.csv')
plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量3132")
plt.title("正常用户电量趋势3132")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

df_steal = pd.read_csv(r'G:\data\data\Steal user.csv')
plt.figure(figsize=(10,9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("窃电用户电量趋势3132")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

 

 

 

 周期性分析可以观测数据的一个周期变化。例如每个季度周期变化,月度周期变化,甚至更短的天数、小时周期性变化。

dish_profit = r'G:\data\data\catering_dish_profit.xls'
data = pd.read_excel(dish_profit, index_col = '菜品名')
data = data['盈利'].copy()
data.sort_values(ascending=False)

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.figure()
data.plot(kind='bar')
plt.ylabel('盈利(元)3132')
p = 1.0*data.cumsum()/data.sum()
p.plot(color = 'r',secondary_y=True, style='-o', linewidth=2)
plt.annotate(format(p[6], '.4%'), xy=(6,p[6]),xytext=(6*0.9,p[6]*0.9), arrowprops=dict(arrowstyle='->',connectionstyle="arc3,rad=.2"))
plt.ylabel('盈利(比例)3132')
plt.show()

 

 贡献度分析,对于一个企业来说有80%的利润来于20%的商品剩下20%的利润只产生余下80%的产品。例如上图我们应加大A1~A7的成本投入减少A8~A10的投入来提高利润。

python画图

sin函数图

x = np.linspace(0,2*np.pi,50)
y=np.sin(x)
plt.plot(x,y,'b-*')
plt.show()

 

 

指数变化图

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = pd.Series(np.exp(np.arange(20)))
plt.figure(figsize=(8,9))
ax1 = plt.subplot(2,1,1)
x.plot(label='原始数据图3132',legend=True)

ax1 = plt.subplot(2,1,2)
x.plot(logy=True,label='对数数据图3132',legend=True)
plt.show()

 

标签:plot,plt,python,画图,sale,pd,3132,数据处理,data
From: https://www.cnblogs.com/Doctor-Schnabel/p/17156716.html

相关文章

  • PythonGame-3 Cocos2d action
    根据上一个学习,增加action#首先导入Cocos包importcocosfromcocos.actionsimport*#对图层进行子类化并在此处定义编程的逻辑classHelloWorld(cocos.layer.Laye......
  • 第一周,python绘图
    1.不同菜品在某段时间的销售量的分布情况(饼图和条形图)importpandasaspdimportmatplotlib.pyplotaspltcatering_dish_profit='catering_dish_profit.xls'#餐......
  • python 上下文管理器(Context managers)
    上下文管理器允许你在有需要的时候,精确地分配和释放资源。使用上下文管理器最广泛的案例就是with语句了。想象下你有两个需要结对执行的相关操作,然后还要在它们中间放置一......
  • python 函数缓存 (Function caching)
    函数缓存允许我们将一个函数对于给定参数的返回值缓存起来。当一个I/O密集的函数被频繁使用相同的参数调用的时候,函数缓存可以节约时间。在Python3.2版本以前我们只有写一......
  • 解决python 操作 hbase报错:TTransportException(type=4,message=’TSocket read 0 byt
    ```text#解决报错:hbase报错TTransportException(type=4,message=’TSocketread0bytes’)这种情况一般协议问题和服务端没开启,如果服务端是开启的,且正常的.那么考虑协......
  • PythonGame-2 Cocos2d环境搭建
    1、安装pip3installcocos2d报错Preparingmetadata(setup.py)...errorerror:subprocess-exited-with-error×pythonsetup.pyegg_infodidnotruns......
  • python--matplotlib(3)
    前言 Matplotlib画图工具的官网地址是http://matplotlib.org/Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制......
  • python(8.5)--列表习题
    目录​​一、求输出结果题 ​​​​二、计算列表元素个数 ​​​​三、查找是否存在某元素 ​​​​四、删除某元素 ​​​​五、如何在列表中插入元素​​​​六、如何......
  • python--matplotlib(1)
    目录​​前言 ​​​​正文​​​​1.arange函数​​​​ 2.绘制sin(x)曲线​​​​3.给sin()加标题,控制x,y轴​​​​4.linspace函数​​​​5.使用linspace函数画一个......
  • python--matplotlib(2)
    前言 Matplotlib画图工具的官网地址是http://matplotlib.org/Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制......