多场景下的算法构建

  • 数据:
    某公司A,B产品在2018年1,2,3月的销量数据,数据格式为xlsx

1、批量读取数据,并输出以下信息
(1)数据量
(2)数据字段columns
(3)输出每个文件分别有多少缺失值

  • 要求:
    ① 创建独立函数,从读取数据到以上输出要求
    ② 运行代码多次调用创建函数,对数据进行批量处理
  • 提示:
    ① 将课程excel数据放入单独文件夹(建议英文路径),函数中通过input来输入excel数据所在文件夹路径,再通过遍历来读取文件
    ② pd.read_excel()中用“index_col”参数,将第一列变为index
    ③ os.walk(path) → 返回路径中的信息及文件,结果为一个生成器
    ④ 定位缺失值位置:data[data.isnull().values == True]

2、批量读取数据,用均值填充缺失值数据,并完成以下计算及图表制作
(1)读取数据并用均值填充缺失值;对“日期”字段进行时间序列处理,转换成日period ,最后输出三个Dataframe文件data1,data2,data3
(2)分别计算data1,data2,data3中A,B产品的月总销量,并绘制多系列柱状图,存储在对应的图片文件夹路径
(3)分别计算A产品在每个月中哪一天超过了月度80%的销量,输出日期

  • 要求:
    ① 分别创建四个函数,对应完成上述需求
    ② 数据文件夹路径和图片存储路径不要相同
  • 提示:
    ① 时间序列转换方法提示:pd.to_period
    ② 时间戳Timestampe转化成字符串用str()方法

3、读取数据并合并,做散点图观察A,B产品销量,并做回归,预测当A销量为1200时,B产品销量值
(1)读取数据删除缺失值;对“日期”字段进行时间序列处理,转换成日period ,合并三个月数据,输出data;
(2)针对A产品销量和B产品销量数据做回归分析,制作散点图并存储,并预测当A销量为1200时,B产品销量值

  • 要求:
    ① 分别创建两个函数,对应完成上述需求
    ② 数据文件夹路径和图片存储路径不要相同
  • 提示:
    ① 用pd.dripna方法去掉缺失值,注意inplace参数

一 导入python包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import os
% matplotlib inline

二 数据读取

1、批量读取数据,并输出以下信息
(1)数据量
(2)数据字段columns
(3)输出每个文件分别有多少缺失值

  • 要求:
    ① 创建独立函数,从读取数据到以上输出要求
    ② 运行代码多次调用创建函数,对数据进行批量处理
  • 提示:
    ① 将课程excel数据放入单独文件夹(建议英文路径)
    ② pd.read_excel()中用“index_col”参数,将第一列变为index
    ③ os.walk(path) → 返回路径中的信息及文件,结果为一个生成器
    ④ 定位缺失值位置:data[data.isnull().values == True]
 def f1_1():path = 'C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'folder = os.walk(path)   # 遍历文件夹files = list(folder)[0][2]n = 1for i in files:file = path + idata = pd.read_excel(file,index_col = 0)data_counts = len(data)   # 计算数据量columns = data.columns.tolist()  # 输出数据columnsnan_counts = len(data[data.isnull().values == True])   # 计算缺失值数量print('第%i个数据数据量为:%i' % (n, data_counts))print('第%i个数据数据字段为:' % n,columns)print('第%i个数据缺失值数量为:%i' % (n, nan_counts))print('------')n += 1
f1_1() # 运行函数
print('finished!')

2、批量读取数据,用均值填充缺失值数据,并完成以下计算及图表制作
(1)读取数据并用均值填充缺失值;对“日期”字段进行时间序列处理,转换成日period ,最后输出三个Dataframe文件data1,data2,data3
(2)分别计算data1,data2,data3中A,B产品的月总销量,并绘制多系列柱状图,存储在对应的图片文件夹路径
(3)分别计算A产品在每个月中哪一天超过了月度80%的销量,输出日期

  • 要求:
    ① 分别创建四个函数,对应完成上述需求
    ② 数据文件夹路径和图片存储路径不要相同
  • 提示:
    ① 时间序列转换方法提示:pd.to_period
    ② 时间戳Timestampe转化成字符串用str()方法
  • 创建函数f2_1() → 完成问题2-1
 def f2_1():path = 'C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'folder = os.walk(path)   # 遍历文件夹files = list(folder)[0][2]data_files = []for i in files:file = path + idata = pd.read_excel(file,index_col = 0)columns = data.columns.tolist()  # 提取列名data.to_period()  # 转换成时间序列data[columns[0]].fillna(data[columns[0]].mean(),inplace = True)  data[columns[1]].fillna(data[columns[1]].mean(),inplace = True)# 均值填充缺失值data_files.append(data)return(data_files)
  • 创建函数f2_2() → 完成问题2-2
 def f2_2(*data_files):path = 'C:/Users/Hjx/Desktop/项目05图片保存位置/'A_sale = []B_sale = []for data in data_files:columns = data.columns  # 提取列名A_sale.append(data[columns[0]].sum())   # 更新A产品总销售量B_sale.append(data[columns[1]].sum())   # 更新B产品总销售量df = pd.DataFrame({'A_sale_sum': A_sale,'B_sale_sum':B_sale},index = pd.period_range('201801','201803',freq = 'M'))#print(df)
    # 查看数据
plt.figure()
df.plot(kind = 'bar',style = '--o',color = ['r','g'],alpha = 0.8, rot = 0,figsize = (8,4))
plt.title('1-3月A,B产品总销量柱状图')
plt.ylim([0,25000])
plt.legend(loc = 'upper left')
plt.grid()
plt.savefig(path + '1-3月A,B产品总销量柱状图.png',dpi=400)
  • 绘制图表,并导出图表

  • 创建函数f2_3() → 完成问题2-3

 def f2_3(*data_files):keydates = []for data in data_files:columns = data.columns  # 提取列名data['A_sale_sum%'] = data[columns[0]].cumsum() / data[columns[0]].sum()  # 计算A产品累计销量占比keydate = data[data['A_sale_sum%']>0.8].index[0]  keydates.append(str(keydate))# 记录销量超过80%的日期print('A产品月度超过80%的销量日期分别为\n', keydates)return(keydates)
f2_1()
data1, data2, data3 = f2_1()[0], f2_1()[1], f2_1()[2]
#print(data1.head(),'\n-----')
#print(data1.head(),'\n-----')
#print(data1.head(),'\n-----')
print('运行函数f2_1(), 分别得到 data1,data2,data3\n-------')f2_2(data1,data2,data3)
print('运行函数f2_2(), 求出不同月份A,B产品总销量,并制作图表\n-------')f2_3(data1,data2,data3)
print('运行函数f2_3(), 求出A产品每个月中超过了月度80%的销量的日期\n-------')

3、读取数据并合并,做散点图观察A,B产品销量,并做回归,预测当A销量为1200时,B产品销量值
(1)读取数据删除缺失值;对“日期”字段进行时间序列处理,转换成日period ,合并三个月数据,输出data;
(2)针对A产品销量和B产品销量数据做回归分析,制作散点图并存储,并预测当A销量为1200时,B产品销量值

  • 要求:
    ① 分别创建两个函数,对应完成上述需求
    ② 数据文件夹路径和图片存储路径不要相同
  • 提示:
    ① 用pd.dripna方法去掉缺失值,注意inplace参数
  • 创建函数f3_1() → 完成问题3-1
 def f3_1():path = 'C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'folder = os.walk(path)   # 遍历文件夹files = list(folder)[0][2]data_files = []for i in files:file = path + idata = pd.read_excel(file,index_col = 0)columns = data.columns.tolist()  # 提取列名data.to_period()  # 转换成时间序列data.dropna(inplace=True)  # 删除缺失值data_files.append(data)data = pd.concat([data_files[0],data_files[1],data_files[2]])  # 合并数据return(data)
  • 创建函数f3_2() → 完成问题3-2
 def f3_2(data):path = 'C:/Users/Hjx/Desktop/项目05图片保存位置/'model = LinearRegression()model.fit(data['productA'][:,np.newaxis],data['productB'])  # 构建回归模型xtest = np.linspace(0,1000,1000)ytest = model.predict(xtest[:,np.newaxis])plt.scatter(data['productA'],data['productB'],marker = '.',color = 'k')plt.plot(xtest,ytest,color = 'r')plt.grid(True)plt.title('A-B产品销量回归拟合')plt.savefig(path + 'A-B产品销量回归拟合.png',dpi=400)  # 存储图表return(model.predict(1200))
f3_1()
data = f3_1()
print('运行函数f3_1(), 查看AB产品销量关系,并制作图表\n-------')f3_2(data)
print('预测当A销量为1200时,B产品销量值为%.1f' % f3_2(data))
print('运行函数f3_2(), 对AB产品销量数据做回归分析并制图,并预测当A销量为1200时,B产品销量值\n-------')

【数据分析】多场景下的算法构建相关推荐

  1. 数分笔记整理20 - 数据处理项目 - 多场景下的算法构建 多场景下的图表可视化表达

    [项目05] 多场景下的算法构建 ''' [项目05] 多场景下的算法构建课程数据: 某公司A,B产品在2018年1,2,3月的销量数据,数据格式为xlsx作业要求: 1.批量读取数据,并输出以下信息 ...

  2. 京东购物在微信等场景下的算法应用实践

    本文根据京东微信手Q业务部马老师在京东\u0026amp;DataFun Talk算法架构系列活动中所分享的<京东购物在微信等场景下的算法应用实践>编辑整理而成,在未改变原意的基础上稍做修 ...

  3. 不同的AI视频推理场景下,如何构建通用高效的抽帧工具?

    导读 AI算法在视频娱乐行业得到了广泛应用,在处理视频数据过程中最大瓶颈之一是视频抽帧延时,抽帧延时往往占据了整体服务的大部分时间.此外,不同的AI算法应用于不同业务时,对视频抽帧需求也不同. 对此, ...

  4. 大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型

  5. 大数据分析案例-基于随机森林算法构建新闻文本分类模型

  6. 大数据分析案例-基于随机森林算法构建人口普查分析模型

  7. 大数据分析案例-基于多元线性回归算法构建广告投放收益模型

  8. 大数据分析案例-基于多元线性回归算法构建用户信用评分模型

  9. 大数据分析案例-基于随机森林算法构建多发性硬化症预测模型

最新文章

  1. c++入门代码_Golang Gin 实战(一)| 快速安装入门
  2. ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
  3. 文章章节序号编排常识
  4. 从Bayes角度理解Deep learning
  5. 小红书笔记api_超级干货丨小红书种草笔记如何写?
  6. ceph 数据库_Facebook打开了动画库,Ceph在Red Hat找到了新家,等等
  7. 中国联通董事李福申辞任
  8. Qt 5.14 稳定版发布,带来更好的 HiDPI 支持和改进 3D 模块
  9. Redis基础(三)——数据类型
  10. 用Python自动发送邮件
  11. JFreeChart自定义拆线图
  12. mysql安装运行(centos)
  13. 时间序列分析的模型应用 – 股价预测
  14. linux文件被锁定,Linux下锁定系统重要文件,防止篡改
  15. 破解闪讯,让你的笔记本变成wifi基站
  16. 十大热门职位发布 高薪行业一目了然
  17. Selenium例1: Bing搜索
  18. CSS背景background和显示元素
  19. 国产磁力架的用途,特点和使用方法
  20. java.sql.SQLException: Invalid utf8 character string: 'ACED00'

热门文章

  1. LINUX检测服务并自动运行,一种Linux下的开机自动检测硬件信息的方法与流程
  2. Qt中的QInputDialog
  3. man、info、help
  4. pyqt5能否用于鸿蒙系统,PyQt显示来自opencv的视频流
  5. mipi和isp处理_VS-RK3399 在linux系统下面调试Mipi camera接口介绍
  6. 顺序表的基本操作实验报告_INDIRECT函数从入门到进阶之相同顺序跨表引用
  7. jdbc封装工具类代码_JDBC的使用-JDBC(3)
  8. python编程快速上手-----让繁琐工作自动化_每周一书《Python编程快速上手 让繁琐工作自动化》分享!...
  9. android原生组件,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!
  10. j2ee三大框架怎么选_【漯河衡器】怎么选地磅?新手选地磅的三大标准