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]
deff1_1():
path ='C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'
folder = os.walk(path)# 遍历文件夹
files =list(folder)[0][2]
n =1for i in files:file= path + i
data = pd.read_excel(file,index_col =0)
data_counts =len(data)# 计算数据量
columns = data.columns.tolist()# 输出数据columns
nan_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()方法
deff2_1():
path ='C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'
folder = os.walk(path)# 遍历文件夹
files =list(folder)[0][2]
data_files =[]for i in files:file= path + i
data = 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)
3、读取数据并合并,做散点图观察A,B产品销量,并做回归,预测当A销量为1200时,B产品销量值 (1)读取数据删除缺失值;对“日期”字段进行时间序列处理,转换成日period ,合并三个月数据,输出data; (2)针对A产品销量和B产品销量数据做回归分析,制作散点图并存储,并预测当A销量为1200时,B产品销量值 要求: ① 分别创建两个函数,对应完成上述需求 ② 数据文件夹路径和图片存储路径不要相同 提示: ① 用pd.dripna方法去掉缺失值,注意inplace参数
deff3_1():
path ='C:/Users/Hjx/Desktop/项目05多场景下的算法构建/'
folder = os.walk(path)# 遍历文件夹
files =list(folder)[0][2]
data_files =[]for i in files:file= path + i
data = 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)deff3_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-------')