日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【数据分析】多场景下的算法构建

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据分析】多场景下的算法构建 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多場(chǎng)景下的算法構(gòu)建

  • 數(shù)據(jù):
    某公司A,B產(chǎn)品在2018年1,2,3月的銷量數(shù)據(jù),數(shù)據(jù)格式為xlsx

1、批量讀取數(shù)據(jù),并輸出以下信息
(1)數(shù)據(jù)量
(2)數(shù)據(jù)字段columns
(3)輸出每個(gè)文件分別有多少缺失值

  • 要求:
    ① 創(chuàng)建獨(dú)立函數(shù),從讀取數(shù)據(jù)到以上輸出要求
    ② 運(yùn)行代碼多次調(diào)用創(chuàng)建函數(shù),對(duì)數(shù)據(jù)進(jìn)行批量處理
  • 提示:
    ① 將課程excel數(shù)據(jù)放入單獨(dú)文件夾(建議英文路徑),函數(shù)中通過(guò)input來(lái)輸入excel數(shù)據(jù)所在文件夾路徑,再通過(guò)遍歷來(lái)讀取文件
    ② pd.read_excel()中用“index_col”參數(shù),將第一列變?yōu)閕ndex
    ③ os.walk(path) → 返回路徑中的信息及文件,結(jié)果為一個(gè)生成器
    ④ 定位缺失值位置:data[data.isnull().values == True]

2、批量讀取數(shù)據(jù),用均值填充缺失值數(shù)據(jù),并完成以下計(jì)算及圖表制作
(1)讀取數(shù)據(jù)并用均值填充缺失值;對(duì)“日期”字段進(jìn)行時(shí)間序列處理,轉(zhuǎn)換成日period ,最后輸出三個(gè)Dataframe文件data1,data2,data3
(2)分別計(jì)算data1,data2,data3中A,B產(chǎn)品的月總銷量,并繪制多系列柱狀圖,存儲(chǔ)在對(duì)應(yīng)的圖片文件夾路徑
(3)分別計(jì)算A產(chǎn)品在每個(gè)月中哪一天超過(guò)了月度80%的銷量,輸出日期

  • 要求:
    ① 分別創(chuàng)建四個(gè)函數(shù),對(duì)應(yīng)完成上述需求
    ② 數(shù)據(jù)文件夾路徑和圖片存儲(chǔ)路徑不要相同
  • 提示:
    ① 時(shí)間序列轉(zhuǎn)換方法提示:pd.to_period
    ② 時(shí)間戳Timestampe轉(zhuǎn)化成字符串用str()方法

3、讀取數(shù)據(jù)并合并,做散點(diǎn)圖觀察A,B產(chǎn)品銷量,并做回歸,預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值
(1)讀取數(shù)據(jù)刪除缺失值;對(duì)“日期”字段進(jìn)行時(shí)間序列處理,轉(zhuǎn)換成日period ,合并三個(gè)月數(shù)據(jù),輸出data;
(2)針對(duì)A產(chǎn)品銷量和B產(chǎn)品銷量數(shù)據(jù)做回歸分析,制作散點(diǎn)圖并存儲(chǔ),并預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值

  • 要求:
    ① 分別創(chuàng)建兩個(gè)函數(shù),對(duì)應(yīng)完成上述需求
    ② 數(shù)據(jù)文件夾路徑和圖片存儲(chǔ)路徑不要相同
  • 提示:
    ① 用pd.dripna方法去掉缺失值,注意inplace參數(shù)

一 導(dǎo)入python包

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

二 數(shù)據(jù)讀取

1、批量讀取數(shù)據(jù),并輸出以下信息
(1)數(shù)據(jù)量
(2)數(shù)據(jù)字段columns
(3)輸出每個(gè)文件分別有多少缺失值

  • 要求:
    ① 創(chuàng)建獨(dú)立函數(shù),從讀取數(shù)據(jù)到以上輸出要求
    ② 運(yùn)行代碼多次調(diào)用創(chuàng)建函數(shù),對(duì)數(shù)據(jù)進(jìn)行批量處理
  • 提示:
    ① 將課程excel數(shù)據(jù)放入單獨(dú)文件夾(建議英文路徑)
    ② pd.read_excel()中用“index_col”參數(shù),將第一列變?yōu)閕ndex
    ③ os.walk(path) → 返回路徑中的信息及文件,結(jié)果為一個(gè)生成器
    ④ 定位缺失值位置:data[data.isnull().values == True]
def f1_1():path = 'C:/Users/Hjx/Desktop/項(xiàng)目05多場(chǎng)景下的算法構(gòu)建/'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) # 計(jì)算數(shù)據(jù)量columns = data.columns.tolist() # 輸出數(shù)據(jù)columnsnan_counts = len(data[data.isnull().values == True]) # 計(jì)算缺失值數(shù)量print('第%i個(gè)數(shù)據(jù)數(shù)據(jù)量為:%i' % (n, data_counts))print('第%i個(gè)數(shù)據(jù)數(shù)據(jù)字段為:' % n,columns)print('第%i個(gè)數(shù)據(jù)缺失值數(shù)量為:%i' % (n, nan_counts))print('------')n += 1 f1_1() # 運(yùn)行函數(shù) print('finished!')

2、批量讀取數(shù)據(jù),用均值填充缺失值數(shù)據(jù),并完成以下計(jì)算及圖表制作
(1)讀取數(shù)據(jù)并用均值填充缺失值;對(duì)“日期”字段進(jìn)行時(shí)間序列處理,轉(zhuǎn)換成日period ,最后輸出三個(gè)Dataframe文件data1,data2,data3
(2)分別計(jì)算data1,data2,data3中A,B產(chǎn)品的月總銷量,并繪制多系列柱狀圖,存儲(chǔ)在對(duì)應(yīng)的圖片文件夾路徑
(3)分別計(jì)算A產(chǎn)品在每個(gè)月中哪一天超過(guò)了月度80%的銷量,輸出日期

  • 要求:
    ① 分別創(chuàng)建四個(gè)函數(shù),對(duì)應(yīng)完成上述需求
    ② 數(shù)據(jù)文件夾路徑和圖片存儲(chǔ)路徑不要相同
  • 提示:
    ① 時(shí)間序列轉(zhuǎn)換方法提示:pd.to_period
    ② 時(shí)間戳Timestampe轉(zhuǎn)化成字符串用str()方法
  • 創(chuàng)建函數(shù)f2_1() → 完成問(wèn)題2-1
def f2_1():path = 'C:/Users/Hjx/Desktop/項(xiàng)目05多場(chǎng)景下的算法構(gòu)建/'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() # 轉(zhuǎn)換成時(shí)間序列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)
  • 創(chuàng)建函數(shù)f2_2() → 完成問(wèn)題2-2
def f2_2(*data_files):path = 'C:/Users/Hjx/Desktop/項(xiàng)目05圖片保存位置/'A_sale = []B_sale = []for data in data_files:columns = data.columns # 提取列名A_sale.append(data[columns[0]].sum()) # 更新A產(chǎn)品總銷售量B_sale.append(data[columns[1]].sum()) # 更新B產(chǎn)品總銷售量df = pd.DataFrame({'A_sale_sum': A_sale,'B_sale_sum':B_sale},index = pd.period_range('201801','201803',freq = 'M'))#print(df) # 查看數(shù)據(jù) 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產(chǎn)品總銷量柱狀圖') plt.ylim([0,25000]) plt.legend(loc = 'upper left') plt.grid() plt.savefig(path + '1-3月A,B產(chǎn)品總銷量柱狀圖.png',dpi=400)
  • 繪制圖表,并導(dǎo)出圖表

  • 創(chuàng)建函數(shù)f2_3() → 完成問(wèn)題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() # 計(jì)算A產(chǎn)品累計(jì)銷量占比keydate = data[data['A_sale_sum%']>0.8].index[0] keydates.append(str(keydate))# 記錄銷量超過(guò)80%的日期print('A產(chǎn)品月度超過(guò)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('運(yùn)行函數(shù)f2_1(), 分別得到 data1,data2,data3\n-------')f2_2(data1,data2,data3) print('運(yùn)行函數(shù)f2_2(), 求出不同月份A,B產(chǎn)品總銷量,并制作圖表\n-------')f2_3(data1,data2,data3) print('運(yùn)行函數(shù)f2_3(), 求出A產(chǎn)品每個(gè)月中超過(guò)了月度80%的銷量的日期\n-------')

3、讀取數(shù)據(jù)并合并,做散點(diǎn)圖觀察A,B產(chǎn)品銷量,并做回歸,預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值
(1)讀取數(shù)據(jù)刪除缺失值;對(duì)“日期”字段進(jìn)行時(shí)間序列處理,轉(zhuǎn)換成日period ,合并三個(gè)月數(shù)據(jù),輸出data;
(2)針對(duì)A產(chǎn)品銷量和B產(chǎn)品銷量數(shù)據(jù)做回歸分析,制作散點(diǎn)圖并存儲(chǔ),并預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值

  • 要求:
    ① 分別創(chuàng)建兩個(gè)函數(shù),對(duì)應(yīng)完成上述需求
    ② 數(shù)據(jù)文件夾路徑和圖片存儲(chǔ)路徑不要相同
  • 提示:
    ① 用pd.dripna方法去掉缺失值,注意inplace參數(shù)
  • 創(chuàng)建函數(shù)f3_1() → 完成問(wèn)題3-1
def f3_1():path = 'C:/Users/Hjx/Desktop/項(xiàng)目05多場(chǎng)景下的算法構(gòu)建/'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() # 轉(zhuǎn)換成時(shí)間序列data.dropna(inplace=True) # 刪除缺失值data_files.append(data)data = pd.concat([data_files[0],data_files[1],data_files[2]]) # 合并數(shù)據(jù)return(data)
  • 創(chuàng)建函數(shù)f3_2() → 完成問(wèn)題3-2
def f3_2(data):path = 'C:/Users/Hjx/Desktop/項(xiàng)目05圖片保存位置/'model = LinearRegression()model.fit(data['productA'][:,np.newaxis],data['productB']) # 構(gòu)建回歸模型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產(chǎn)品銷量回歸擬合')plt.savefig(path + 'A-B產(chǎn)品銷量回歸擬合.png',dpi=400) # 存儲(chǔ)圖表return(model.predict(1200)) f3_1() data = f3_1() print('運(yùn)行函數(shù)f3_1(), 查看AB產(chǎn)品銷量關(guān)系,并制作圖表\n-------')f3_2(data) print('預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值為%.1f' % f3_2(data)) print('運(yùn)行函數(shù)f3_2(), 對(duì)AB產(chǎn)品銷量數(shù)據(jù)做回歸分析并制圖,并預(yù)測(cè)當(dāng)A銷量為1200時(shí),B產(chǎn)品銷量值\n-------')

總結(jié)

以上是生活随笔為你收集整理的【数据分析】多场景下的算法构建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。