【数据分析】多场景下的算法构建
多场景下的算法构建
- 数据:
某公司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-------')
【数据分析】多场景下的算法构建相关推荐
- 数分笔记整理20 - 数据处理项目 - 多场景下的算法构建 多场景下的图表可视化表达
[项目05] 多场景下的算法构建 ''' [项目05] 多场景下的算法构建课程数据: 某公司A,B产品在2018年1,2,3月的销量数据,数据格式为xlsx作业要求: 1.批量读取数据,并输出以下信息 ...
- 京东购物在微信等场景下的算法应用实践
本文根据京东微信手Q业务部马老师在京东\u0026amp;DataFun Talk算法架构系列活动中所分享的<京东购物在微信等场景下的算法应用实践>编辑整理而成,在未改变原意的基础上稍做修 ...
- 不同的AI视频推理场景下,如何构建通用高效的抽帧工具?
导读 AI算法在视频娱乐行业得到了广泛应用,在处理视频数据过程中最大瓶颈之一是视频抽帧延时,抽帧延时往往占据了整体服务的大部分时间.此外,不同的AI算法应用于不同业务时,对视频抽帧需求也不同. 对此, ...
- 大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型
- 大数据分析案例-基于随机森林算法构建新闻文本分类模型
- 大数据分析案例-基于随机森林算法构建人口普查分析模型
- 大数据分析案例-基于多元线性回归算法构建广告投放收益模型
- 大数据分析案例-基于多元线性回归算法构建用户信用评分模型
- 大数据分析案例-基于随机森林算法构建多发性硬化症预测模型
最新文章
- c++入门代码_Golang Gin 实战(一)| 快速安装入门
- ViewPager相互嵌套,导致子ViewPager无法滑动,且子ViewPager中的view无法被点击
- 文章章节序号编排常识
- 从Bayes角度理解Deep learning
- 小红书笔记api_超级干货丨小红书种草笔记如何写?
- ceph 数据库_Facebook打开了动画库,Ceph在Red Hat找到了新家,等等
- 中国联通董事李福申辞任
- Qt 5.14 稳定版发布,带来更好的 HiDPI 支持和改进 3D 模块
- Redis基础(三)——数据类型
- 用Python自动发送邮件
- JFreeChart自定义拆线图
- mysql安装运行(centos)
- 时间序列分析的模型应用 – 股价预测
- linux文件被锁定,Linux下锁定系统重要文件,防止篡改
- 破解闪讯,让你的笔记本变成wifi基站
- 十大热门职位发布 高薪行业一目了然
- Selenium例1: Bing搜索
- CSS背景background和显示元素
- 国产磁力架的用途,特点和使用方法
- java.sql.SQLException: Invalid utf8 character string: 'ACED00'
热门文章
- LINUX检测服务并自动运行,一种Linux下的开机自动检测硬件信息的方法与流程
- Qt中的QInputDialog
- man、info、help
- pyqt5能否用于鸿蒙系统,PyQt显示来自opencv的视频流
- mipi和isp处理_VS-RK3399 在linux系统下面调试Mipi camera接口介绍
- 顺序表的基本操作实验报告_INDIRECT函数从入门到进阶之相同顺序跨表引用
- jdbc封装工具类代码_JDBC的使用-JDBC(3)
- python编程快速上手-----让繁琐工作自动化_每周一书《Python编程快速上手 让繁琐工作自动化》分享!...
- android原生组件,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!
- j2ee三大框架怎么选_【漯河衡器】怎么选地磅?新手选地磅的三大标准