数据探索
读取数据
1 import pandas as pd 2 catering_sale = 'D:\Python\数据处理/catering_sale.xls' # 餐饮数据 3 data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列 4 print(data) 5 print(data.describe(),data.describe().max()-data.describe().min())
餐饮销额数据异常值检测
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') # 画箱线图,直接使用DataFrame的方法 7 x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签 8 y = p['fliers'][0].get_ydata() 9 y.sort() # 从小到大排序,该方法直接改变原对象 10 11 for i in range(len(x)): 12 if i>0: 13 plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i])) 14 else: 15 plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i])) 16 17 plt.title('箱型图3152',fontsize=20) 18 plt.show() # 展示箱线图
1 import pandas as pd 2 import numpy as np 3 catering_sale = 'D:\Python\数据处理/catering_fish_congee.xls' # 餐饮数据 4 data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据,指定“日期”列为索引 5 print(data.describe()) 6 7 bins = [0,500,1000,1500,2000,2500,3000,3500,4000] 8 labels = ['A_lei','[500,1000)','[1000,1500)','[1500,2000)', 9 '[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] 10 data['sale分层'] = pd.cut(data.sale, bins, labels=labels) 11 print(data) 12 13 aggResult = data.groupby('sale分层').agg({'sale':'count'}) 14 print(aggResult) 15 16 pAggResult = round(aggResult/aggResult.sum(), 2, )
1 import matplotlib.pyplot as plt 2 plt.figure(figsize=(10,6)) # 设置图框大小尺寸 3 pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图 4 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 5 plt.title('季度销售额频率分布直方图3152',fontsize=20) 6 plt.show()
不同菜品在某段时间的销售量的分布情况
1 import pandas as pd 2 import matplotlib.pyplot as plt 3 catering_dish_profit = 'D:\Python\数据处理/catering_dish_profit.xls' # 餐饮数据 4 data = pd.read_excel(catering_dish_profit) 5 6 x =data['盈利'] 7 labels = data['菜品名'] 8 plt.figure(figsize=(8,6)) 9 plt.pie(x,labels=labels) 10 plt.rcParams['font.sans-serif'] = 'SimHei' 11 plt.title('菜品销售分布(饼图)3152',fontsize=20) 12 plt.axis('equal') 13 plt.show()
1 x=data['菜品名'] 2 y=data['盈利'] 3 plt.figure(figsize=(8,4)) 4 plt.bar(x,y) 5 plt.rcParams['font.sans-serif']='SimHei' 6 plt.xlabel('菜品') 7 plt.ylabel('销量') 8 plt.title('菜品销售量分布(条形图)3152',fontsize=20) 9 plt.show()
不同部门各月份的销售对比情况
1 #部门之间 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 data=pd.read_excel("D:\Python\数据处理\dish_sale.xls") 5 plt.figure(figsize=(8,4)) 6 plt.plot(data['月份'],data['A部门'],color='green',label='A部门',marker='o') 7 plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='s') 8 plt.plot(data['月份'],data['C部门'],color='skyblue',label='C部门',marker='x') 9 plt.legend() 10 plt.ylabel('销售额(万元)') 11 plt.title('部门之间销售金额比较3152',fontsize=20) 12 plt.show() 13 14 #B部门 15 data=pd.read_excel("D:\Python\数据处理\dish_sale_b.xls") 16 plt.figure(figsize=(8,4)) 17 plt.plot(data['月份'],data['2012年'],color='green',label='2012年',marker='o') 18 plt.plot(data['月份'],data['2013年'],color='red',label='2013年',marker='s') 19 plt.plot(data['月份'],data['2014年'],color='skyblue',label='2014年',marker='x') 20 plt.legend() 21 plt.ylabel('销售额(万元)') 22 plt.title('B部门各年份之间销售金额的比较3152',fontsize=20) 23 plt.show()
某单位日用电量预测分析
1 import pandas as pd 2 import matplotlib.pyplot as plt 3 4 df_normal = pd.read_csv("D:\Python\数据处理/user.csv") 5 plt.figure(figsize=(8,4)) 6 plt.plot(df_normal["Date"],df_normal["Eletricity"]) 7 plt.xlabel("日期") 8 #设置x轴刻度间隔 9 x_major_locator = plt.MultipleLocator(7) 10 ax=plt.gca() 11 ax.xaxis.set_major_locator(x_major_locator) 12 plt.ylabel("每日电量") 13 plt.title("正常用户电量趋势3152",fontsize=20) 14 plt.rcParams['font.sans-serif']=['SimHei'] 15 plt.show() 16 17 #窃电用户用电趋势分析 18 df_steal = pd.read_csv("D:\Python\数据处理/Steal user.csv") 19 plt.figure(figsize=(10,9)) 20 plt.plot(df_steal["Date"],df_steal["Eletricity"]) 21 plt.xlabel("日期") 22 plt.ylabel("日期") 23 x_major_locator=plt.MultipleLocator(7) 24 ax=plt.gca() 25 ax.xaxis.set_major_locator(x_major_locator) 26 plt.title("窃电用户用电趋势3152",fontsize=20) 27 plt.rcParams['font.sans-serif']=['SimHei'] 28 plt.show()
菜品盈利数据帕累托图
1 import pandas as pd 2 dish_profit = 'D:\Python\数据处理/catering_dish_profit.xls' 3 data=pd.read_excel(dish_profit,index_col='菜品名') 4 data=data['盈利'].copy() 5 data.sort_values(ascending=False) 6 7 import matplotlib.pyplot as plt 8 plt.rcParams['font.sans-serif']=['SimHei'] 9 plt.rcParams['axes.unicode_minus']=False 10 plt.figure() 11 data.plot(kind='bar') 12 plt.ylabel('盈利(无)') 13 p=1.0*data.cumsum()/data.sum() 14 p.plot(color='r',secondary_y=True,style='-o',linewidth=2) 15 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"))#图上标注 16 plt.ylabel('盈利(比例') 17 plt.title("菜品盈利数据帕累托图3152",fontsize=20) 18 plt.rcParams['font.sans-serif']=['SimHei'] 19 plt.show()
1 import matplotlib.pyplot as plt 2 plt.rcParams['font.sans-serif']=['SimHei'] 3 plt.rcParams['axes.unicode_minus']=False 4 plt.figure(figsize=(7,5)) 5 6 import numpy as np 7 x=np.linspace(0,2*np.pi,50) 8 y=np.sin(x) 9 plt.plot(x,y,'bp--') 10 plt.title("正弦曲线图3152",fontsize=20) 11 plt.show()
1 labels='Frogs','Hogs','Dogs','Logs' 2 sizes=[15,30,45,10] 3 colors=['yellowgreen','gold','lightskyblue','lightcoral'] 4 explode=(0,0.1,0,0) 5 plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.lf%%',shadow=True,startangle=90) 6 plt.axis('equal')#显示为圆 7 plt.title("饼图3152",fontsize=20) 8 plt.show()
1 import numpy as np 2 x=np.random.randn(1000) 3 plt.hist(x,10) 4 plt.title("二维条形直方图3152",fontsize=20) 5 plt.show()
1 import numpy as np 2 import pandas as pd 3 x = np.random.randn(1000) # 1000个服从正态分布的随机数 4 D = pd.DataFrame([x, x+1]).T # 构造两列的DataFrame 5 D.plot(kind = 'box') # 调用Series内置的绘图方法画图,用kind参数指定箱型图box 6 plt.title("箱型图3152",fontsize=20) 7 plt.show()
1 import numpy as np 2 import pandas as pd 3 x=pd.Series(np.exp(np.arange(20))) 4 plt.figure(figsize=(8,9)) 5 axl=plt.subplot(2,1,1) 6 x.plot(label='原始数据图',legend=True) 7 plt.title("原始数据图3152",fontsize=20) 8 axl=plt.subplot(2,1,2) 9 x.plot(logy=True,label='对数数据图',legend=True) 10 plt.title("对数数据图3152",fontsize=20) 11 plt.show()
1 import numpy as np 2 import pandas as pd 3 4 error=np.random.randn(10) 5 y=pd.Series(np.sin(np.arange(10))) 6 y.plot(yerr=error) 7 plt.title("误差条形图3152",fontsize=20) 8 plt.show()
总结:
检测异常值和缺失值 → 数据特征分析(频率分布分析、对比分析、帕累托分析、周期性分析、相关性分析等)
Matplotlib、pandas 、numpy + 规范(中文、正负号)+ 读取数据 + …… + 横纵坐标、标题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构