第十一届 泰迪杯数据挖掘挑战赛-产品订单数据分析B题(完整代码)--数据处理--第一部分

作品简介

本文是运用jupyter notebook来撰写代码

提供全代码

下方是简单将结果展示,与CSDN博客相连--保真

#导入需要的库
import pandas as pd          
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime    
from pandas import Series
from sklearn.metrics import mean_squared_error
from math import sqrt
from statsmodels.tsa.seasonal import seasonal_decompose
import statsmodels
import statsmodels.api as sm
from statsmodels.tsa.arima_model import ARIMA
%matplotlib inline
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
import seaborn as sns

df = pd.read_csv("order_train0.csv")#访问数据

#从上方可以看出,价格最大值去到47911,最大需求去到12480,远大于一般商品

#查看价格分布、需求分布状况

 #检验数据是否呈现正态分布
def KsNormDetect(df):   # 输出结果是服从正态分布的数据列的名字
    from scipy.stats import kstest
    list_norm_T = []   # 用来储存服从正态分布的数据列的名字
    for col in df.columns:
        ***********        # 计算均值
        ***********        # 计算标准差
        ***********        # 计算P值
        if res<=0.05:             # 判断p值是否服从正态分布,p<=0.05 则服从正态分布,否则不服从
            print(f'{col}该列数据服从正态分布------')
            print('均值为:%.3f,标准差为:%.3f' % (u, std))
            print('-'*40)
            **************           
        else:                                # 这一段实际上没什么必要
            print(f'!!!{col}该列数据不服从正态分布**********')
            print('均值为:%.3f,标准差为:%.3f' % (u, std))
            print('*'*40)
KsNormDetect(df[['item_price', 'ord_qty']])

# 对待处理数据中心服从正态分布的数据列
def three_sigma(Ser1):  # Ser1:表示传入DataFrame的某一列
    rule = []
    ***********************
    ***********************
    print(len(out))
    return out          # 返回落在3sigma之外的行索引值

def delete_out3sigma(data, list_norm):  # data:待检测的DataFrame;list_norm:服从正态分布的数据列名
    out_index = []                      # 保存要删除的行索引
    for col in list_norm:            # 对每一列分别用3sigma原则处理
        ***************************
        ***************************
    ******************  # 去除 out_index 中的重复元素
    print(f'\n所删除的行索引共计{len(delete_)}个:\n',delete_)
    data.drop(delete_,inplace=True) # 根据 delete_ 删除对应行的数据
    df = data
    return df

delete_out3sigma(df,['item_price','ord_qty'])

#再次查看分布状况

​编辑​

​编辑​




​​​编辑​










创作时间: